이펙티브 타입스크립트 (댄 밴더캄 지음) 를 읽고 정리
📍tsconfig.json
1️⃣tsc --init 명령어로 초기 생성
2️⃣noImplicitAny
// tsconfig.json
{
"compilerOptions": {
"noImplicitAny": true // true로 설정해서 모든 변수에 타입 설정하는 것이 좋다
// ...
}
}
- 변수들이 미리 정의된 타입을 가져야 하는지 여부를 제어
- any 타입으로 간주될 가능성을 사전에 차단
3️⃣strictNullChecks
- noImplicitAny = true 필요
- null과 undefined가 모든 타입에서 허용되는지 확인
// null 대신 undefined 써도 동일
// strictNullChecks = false
const x: number = null; // 정상
// strictNullChecks = true
const x: number = null; // 에러 : null 타입은 number 타입에 할당할 수 없음
📍assertion (단언문)
strictNullChecks를 켜서 null 가능성을 사전에 차단할 수 있는데, 이 때, assertion이 필요하다
// strictNullChecks = true
const el = document.getElementById("status");
el.textContent = "Ready"; // 에러 : 개체가 null 일 수 있음
// 이를 해결하기 위해 assertion 사용
if (el) {
el.textContent = "Ready"; // 정상, null 을 제외하는 타입 가드
}
el!.textContent = "Reacdy"; // 정상, el이 null이 아님을 단언 (assertion)