TS의 strictNullChecks

조민호·2023년 1월 20일
0

strickNullChecks 를 적용하지 않은 일반상태에서는

  • 모든 타입은 null, undefined 값을 가질 수 있습니다.
  • string 으로 타입을 지정해도, null 혹은 undefined 값을 할당할 수 있다는 것입니다.
let a: number = undefined; //error 가 아님
let b: string = null; //error 가 아님


strickNullChecks 모드를 사용하게 되면
  • 모든 타입은 null, undefined 값을 가질 수 없고, 가지려면 union type 을 이용해서 직접 명시 해야 합니다.
  • any 타입은 null 과 undefined 를 가집니다
  • 예외적으로 void 타입의 경우 undefined 를 가집니다.
let a: number = undefined; //error
let b: string = null; //error
let c: any = undefined;   
let d: null = null;
let e: void = undefined;

다른 예시를 들어 봅시다
let loggedInUsername: string = 'kkkkkk';

const users = [
  { name: 'Oby', age: 12 },
  { name: 'Heera', age: 32 },
];

const loggedInUser = users.find((u) => u.name === loggedInUsername);
console.log(loggedInUser.age); 
//'loggedInUser' is possibly 'undefined'
  • users 객체 배열을 순회하면서 name키값이 kkkkkk인 것을 찾는 로직인데
  • 분명 users 객체 배열에는 name키값이 kkkkkk인 객체가 없습니다
  • 그러면 변수 loggedInUser에는 undefined값이 들어가게 됩니다
  • 여기서 strickNullChecks 모드가 true라면 undefined가 들어갈 수 없기에 'loggedInUser' is possibly 'undefined' 에러가 발생합니다

출처

04.TS Complier

TSConfig Reference - Docs on every TSConfig option

profile
웰시코기발바닥

0개의 댓글