외부 입력 받기
JSON, postMessage, 사용자 입력처럼 모양이 불확실하면 unknown으로 받고 검증한다.
바로 any로 풀지 않는다any, unknown, never, void, null, undefined를 한 묶음으로 외우면 실제 코드에서 위험하다. any는 검사를 끄고, unknown은 좁히기를 요구하며, never는 도달 불가나 불가능한 분기를 표현하고, void는 반환값을 쓰지 않는 계약을 나타낸다.
JSON, postMessage, 사용자 입력처럼 모양이 불확실하면 unknown으로 받고 검증한다.
바로 any로 풀지 않는다typeof, in, Array.isArray, schema validator로 unknown을 실제 타입으로 좁힌다.
검증 전 속성 접근은 불가능해야 안전하다switch에서 모든 union case를 처리했는지 never로 확인한다.
새 case 추가 시 컴파일 오류를 만든다값을 반환하지 않는 함수는 void, 절대 돌아오지 않는 함수는 never로 의미를 나눈다.
throw 함수와 log 함수는 다르다null과 undefined 허용 여부를 strictNullChecks 기준으로 명확히 한다.
옵션 속성과 null 값은 다르다