자바스크립트와 타입스크립트는 매우 관계가 깊은 언어이다.이 둘의 관계를 정확히 이해하고 있다면 자바스크립트 기반으로 공부하였던 나에게 타입스크립트에 대한 이해를 더욱 쉽고 빠르게 할 수 있을 것으로 생각된다. 자바스크립트로 작성한 파일에 문법적인 오류가 존재하지 않는다
item4: 구조적 타이핑에 익숙해지기 자바스크립트는 어떤 함수의 매개변수 값이 모두 제대로 주어진다면, 그 값이 어떻게 만들어졌는지 신경 쓰지 않고 사용한다. 이것을 바로 덕 타이핑 기반이라고 한다. 그래서 타입스크립트는 매개변수 값이 요구사항을 만족한다면, 자바스크
타입스크립트를 설치하면 다음 두 가지를 사용할 수 있다.타입스크립트 컴파일러(tsc)단독으로 실행할 수 있는 타입스크립트 서버(tsserver)이 두가지를 실행할 수 있으므로, 타입스크립트도 언어 서비스를 제공한다고 할 수 있다.언어 서비스는 코드 자동 완성, 명세,
업로드중..타입스크립트에서 변수에 값을 할당하고, 타입을 부여하는 방법은 두 가지가 있는데,첫번째는 변수에 Person이라는 타입 선언을 붙여서, 그 값이 선언된 타입임을 명시한다.두번째는 as Person 이라는 타입 단언을 수행한다. 그러면 타입스크립트가 추론한 것
래퍼 객체를 피하기 전에, 래퍼 객체가 무엇인지 정확히 알아야 왜 피해야 하는지 알 수 있는 법이다. 먼저 Js Deep Dive에 있는 책을 정리하여, 래퍼 객체가 무엇이고 어떻게 동작하는지 알아보자.자바스크립트에는 원시값으로 활용할 수 있는 일곱가지 타입이 있다.n
다음 두 코드는 차이가 있다.첫번째 코드는 함수의 문장 표현이고, 두번째와 세번재 표현은 함수 표현식이라고 한다. 이 코드를 소개하기 전에 먼저 결론부터 이야기하자면, 타입스크립트에서는 함수 표현식을 사용하는 것이 좋다. 그 이유는 아래와 같이 정리할 수 있다.함수의
명명된 타입을 선언할 때 개발자들이 가장 많이 하는 고민이지 않을까 싶다.어떨 때 타입을 사용하고, 어떨 때 인터페이스를 사용해야 할까?오늘 그 고민에 대한 정리를 책을 읽고 깨달은 점에 대하여 정리할 수 있었다.이 두가지 차이를 명확하게 이해하고 어떤 상황에서 어떤
1. 인덱스 시그니처를 이용하는 이유 객체가 중간에 변경될 수 있고, 새로운 프로퍼티와 메서드를 사용해야 할 수도 있다. 특히 외부 파일에서 csv파일 같은 것을 불러와 가져오는 경우, 열의 이름이 무엇인지 미리 알 수 없다. 이럴 경우에는 인덱스 시그니처를 적극적으로 이용해 볼 수 있다. > 인덱스 시그니처는 동적 데이터를 작성할 때 매우 유용하다. ...
개발자라면 깔끔하고 간결한 코드를 적기 위하여 DRY(don't repeat yourself) 원칙을 지켜야 한다. 이 부분은 타입에 대해서도 적용되며, 반복되지 않고 깔끔한 코드를 작성하기 위하여 노력해야 한다.타입에 대한 반복을 줄일 수 있는 방법을 하나씩 알아보도
타입스크립트를 처음 공부하였을 때 착각한 것이 한 가지 있다.바로 모든 변수에 타입을 지정해줘야 하는 것이 아닌가??라는 것..사실은 타입스크립트도 어느정도의 타입에 대하여 추론을 진행할 수 있다.그렇기 때문에 아래 코드와 같이 작성을 하여도,다음과 같이 작성하여도 충
자바스크립트에서는 한 변수를 다른 목적을 가지고 다른 타입으로 재사용해도 된다.하지만, 타입스크립트에서는 오류가 발생한다.
타입스크립트에는 넓히기 라는 개념이 존재한다. 타입스크립트에서 작성된 코드를 체크하는 정적 분석 시점에, 변수는 가능한 값들의 집합인 타입을 가진다. 변수가 초기화 될 때, 타입을 명시하지 않으면 타입 체커는 직접 타입을 결정해야 한다. 그래서 값을 가지고 할당 가능한
타입스크립트에서 타입을 좁히는 과정을 알아보도록 하자. 타입을 좁혀나간다는 것은 어떤 의미일까? 지난 글에서 타입을 넓히기 때문에 상수와 타입이 추론된다는 점을 이해하였다. 이번 글에서는 타입 좁히기를 통하여 넓은 타입에서 작은 타입으로 타입을 체크하는 것을 지켜보
이 글의 제목은 TCP와 관련하여 존 포스텔이 쓴 경고성 원칙(robustness principle)에서 나온 말이다.TCP 구현체는 견고성의 일반적인 원칙을 따라야 한다. 당신의 작업은 엄격하게 하고, 다른 사람의 작업은 너그럽게 받아들여야 한다.이는 함수 시그니처의
타입스크립트를 사용할 때 처음으로 가장 어렵다고 느껴진 부분이 바로 null에 대한 것과 undefined 에 대한 처리이다. 어떤 변수가 null이 될 수 있는지 없는지를 명확하게 알 수 없고 타입만으로도 처리할 수 없기 때문이다. 값이 전부 null이거나, 전부 n
유티온 타입의 속성을 가지는 인터페이스를 만들고 있다면, 인터페이스의 유니온 타입을 사용하는 것이 더욱 알맞지 않을 지 검토하는 과정이 필요하다. 이러한 타입 설계는 몇가지 이상한 점이 있다.먼저, layout이 LineLayout 형태이면서 paint 속성이 Fill
string 타입의 범위는 매우 넓다. "x"나 "y" 같은 한 글자도, 120만 줄이 넘는 글도 모두 string타입이기 때문에 이러한 타입으로 변수를 선언하려면 이보다 더욱 좁은 타입이 있을 수 있는지 검토해보아야 한다.string이 남발되었다.. 그리고 엉뚱한 값
다음 코드 예시를 보자.calculateNorm함수가 2차원만 받아오는 친구라면, 3차원 벡터를 허용하지 않도록 해야 한다. 그러면 타입이 아니라 값의 관점에서 받아오는 타입을 Vertor2D라고 표현할 필요성이 존재한다. 이 때, 공식 명칭 개념을 타입스크립트에 적용
타입스크립트를 사용하다 보면 불친절한 라이브러리를 만나거나, 형태가 너무 복잡해서 any를 사용해야 할 때가 존재한다.하지만, any를 사용해야 한다고 해서 막 쓰는 것이 아니라 더욱 현명하고 안전하게 사용할 수 있다는 점을 이번 Item 38, 39를 통해 배웠기 때
타입스크립트에서는 일반적으로 변수의 타입은 변수를 선언할 때 결정한다. 그 후, 정제되거나 변경되는 것은 어려우나, any 타입과 관련해서는 예외인 경우가 존재한다.out 타입은 처음에 암시적 any로 초기화되었는데, 반환 타입은 number\[]로 등장한다. out의
만약 내가 함수의 반환값을 지정해야 하는데, 잘 모를 때, 아래와 같이 함수를 정의할 수 있다.반환 타입으로 any를 사용하는 것은 좋지 않다. 그 이유는 any를 남발하다 보면 사용하는 곳마다 타입 에러를 발생하게 될 수 있고, 나도 모르게 undefined가 들어가
이번 Item에서는 devDependencies와 dependencies에서 타입스크립트와 관련된 버전을 관리하는 데 있어 마주하였던 어려움에 대해서 궁금했던 점들에 대해서 알 수 있었다.사실 typescript를 이용하면서 내가 사용하고 있는 모듈이나 라이브러리들과
자바스크립트를 처음 공부할 때 스코프에 대한 개념을 이해하다 보면 this가 어떻게 바인딩되는지까지도 이해할 수 있다. 하지만 이를 처음 공부하는 사람 입장에서는 this가 동작하는 원리를 파악하기 어려울 것이다.하지만, this의 사용은 타입스크립트에서 혼동을 줄 수
이렇게 조건부 타입을 작성하는 것은 이번에 타입스크립트 책 읽으면서 처음 본 것이어서 나중에 꼭 써봐야 겠다는 마음으로 정리해본다.만약 내가 이런 함수를 작성하고 싶다고 가정해보자.double 함수에는 string 타입도 들어올 수 있고, number 타입의 매개변수가
몰랐던 사실인데, 자바스크립트의 기능만을 이용하는 것이 아니라 타입스크립트 팀 내에서 독립적으로 개발했던 내장 기능들이 있었다고 한다.하지만, 자바스크립트의 발전에 따라 신규 기능이 나오게 되면서, 타입스크립트 내에서 사용하는 기능과 호환성에 문제가 생기게 된 것이다.
아래 객체를 순회해야 한다고 상황을 가정해 보자.첫 시도에서 보기 좋게 에러가 발생해버린다. 그 이유는 무엇일까?! 루프문에서 정의한 k의 타입은 string인 반면에 객체에는 one, two, three라는 세 개의 키만 존재하기 때문이다. 타입이 다르게 추론되었기
드디어 이 내용이 나왔다!!!처음에 Storybook으로 두둥 UI 만들 때 아직 익숙하지 않았던 Typescript로 DOM 요소들을 만들려고 하니까 어색하고 배울 점도 굉장히 많았었는데, 이번 기획에 한번 더 잘 정리해보고자 한다.드래그를 핸들링하는 핸들러 함수를
이번에 Imhere 프로젝트를 폼프님이 자바스크립트에서 타입스크립트로 마이그레이션을 해 주셨다. 타입스크립트로 마이그레이션 해야 하는데 너무 오래 걸릴 것 같아서 고민이에요~라고 말한 지 일주일 안에 모든 마이그레이션을 완료하셨다...정말 ... 갓폼프...무튼 이번에