아이템 2. 타입스크립트 설정 이해하기 #
타입스크립트 컴파일러(타입 체커)는 매우 많은 설정을 가지고 있다.
설정 방법 | 예시 |
---|---|
커맨드 라인 (cli) | tsc --noImplicitAny program.ts |
파일 (file) | tsconfig.json 참고 : tsc --init 통해 파일 생성 가능하다. |
중요/권장 설정 : noImplicitAny
타입을 미리 정의하여 사용할 것인지 설정하는 것
값 | 설명 |
---|---|
true | 타입을 미리 정의해야 한다. 타입스크립트는 타입 정보를 설정/체크할 때 가장 효과적이기 때문에, 되도록 true 설정을 권장한다. |
false | (기존 자바스크립트와 같이) 타입을 미리 정의하지 않아도 된다. 주의! 이 경우 any 타입으로 추론/간주된다. 자바스크립트에서 타입스크립트로 전환할 때와 같은 상황에서만 설정하는 것을 권장한다. |
중요/권장 설정 : strictNullChecks
타입에 null, undefined 가 허용될 수 있도록 할 것인지 설정하는 것
strictNullChecks
설정은 트레이드오프가 있다.
- 오류 검증 / 확인 : ↑
- 코드 작성(생산성) : ↓
값 | 설명 |
---|---|
true | null , undefined 를 허용하지 않는다.예를 들어, 다음 코드는 오류를 발생시킨다. const x: number = null; // 오류 : ~ 'null' 형식은 'number' 형식에 할당할 수 없습니다. null 을 허용하기 위해서는 다음과 같이 명시적으로 작성해야한다. `const x: number |
false | null , undefined 를 허용한다.예를 들어, 다음 코드는 오류를 발생시키지 않는다. const x: number = null; // 정상 흔히 봐왔던 에러 메시지 : “undefined는 객체가 아닙니다” |
"
strictNullChecks
는noImplcitAny
가 먼저 설정되어야 한다. “
중요 설정 : strict (모드)
noImplicitAny
, strictNullChecks
등의 엄격한 체크를 설정하고 싶다면 strict
설정한다.
” stirct 설정 시 대부분의 오류를 잡아낼 수 있다. “
내가 생각한 핵심은 다음과 같다.
타입스크립트를 사용하려는 이유, 타입스크립트로 넘어가려는 이유를 생각해보면
위 내용의 ‘엄격한 설정’들을 설정해주는 것이 맞지 않을까?‘엄격함’ 보단 ‘조금 더 편리한 코드 작성’을 추구한다면 기존의 자바스크립트를 사용해도 괜찮지 않을까?
“이것은 온전히 (개발자의)취향의 차이이다.” (1장 중)