독서/이펙티브 타입스크립트

[이펙티브 타입스크립트] 2022-02-14 TIL

콘요맘떼 2023. 2. 14. 13:32

[1장 - 아이템 2]

- 타입스크립트 컴파일러 설정은 command line argument와 tsconfig.json을 통해 설정할 수 있다.

- 타입스크립트 컴파일러 설정은 주로 입출력과 관련된 내용을 다루지만 핵심적인 기능에 대한 설정도 존재한다.

(1) noImplicitAny: enable시 암시적인 any를 사용할 수 없게 된다. 따라서 명시적인 any 혹은 분명한 타입을 제시해줘야 한다. 일반적인 경우에서는 해당 옵션을 enable하는 것이 좋다. 다만, javascript 코드를 typescript 코드로 전환하는 과정에서는 (migration) 제외한다.

(2) strictNullChecks: 기본적으로 null과 undefined는 모든 타입의 변수에 할당될 수 있다. (예를 들어서 한 클래스의 멤버가 null 혹은 undefined 타입이 아니어도 두 타입의 값이 대입될 수 있다) 만약 strictNullChecks를 enable한다면 더 이상 null과 undefined를 타입에 함부로 대입할 수 없게 되며 만약 해당 값들을 대입하고 싶은 경우 'SomeType | null'과 같이 타입에 명시해주는 단계가 필요하다. strictNullChecks는 'undefined is not a object'와 같은 런타임 에러를 방지하는 데 조금 도움을 줄 수 있다.

 

[1장 - 아이템 3]

- 타입스크립트 컴파일러는 크게 두 가지 기능을 수행한다.

(1) 최신 타입스크립트 (혹은 자바스크립트) 코드가 브라우저에서 작동할 수 있도록 구 버전 자바스크립트로 트랜스파일 해준다. (transpile: 어떠한 소스코드를 동일한 기능을 수행하는 다른 언어 혹은 버전 등으로 변화하는 것)

(2) 타입 검사 수행

- 타입스크립트 컴파일러는 타입 검사를 통과하지 못한 코드에 대해서도 빌드를 수행한다. (타입 에러가 error이 아닌 warning처럼 처리된다고 생각하면 쉬울 것이다) 만약 타입 오류시 컴파일이 되지 않게 하려면 'noEmitOnError' 설정을 이용하면 된다.

- 타입스크립트 컴파일 과정에서 모든 인터페이스, 타입 등은 삭제된다.