타입스크립트에서 Nullable 타입을 쓰는 법

타입스크립트로 작성된 코드를 보다가 data!.list이렇게 쓰여있는 코드를 발견하고 찾아보았는데 타입스크립트에 느낌표 operator가 있다는 것을 알게되었다. https://www.typescriptlang.org/docs/handbook/advanced-types.html#nullable-types

Nullable 타입(null 이나 undefined)은 string 이나 number 같은 다른 타입으로 선언되어 있는 값에 서브타입으로 쓰여질 수 있다.

그러면서 런타임 에러를 자주 발생시키는데 이를 타입스크립트에서는 방어할 수 있는 대안을 주고있다.

  1. 컴파일 옵션으로 --strictNullChecks 을 주어서 null 타입이 아닌데 null 을 선언할 수 없게 하거나,
    let name: string;
    name = null // 'string' 타입에 'null'이 대입될 수 없다
    
  2. 그럼에도 컴파일러가 null을 체크하지 못하는 경우(중첩함수에 null로 인자값이 넘어오는 경우)에는 변수뒤에 !를 써서 null이 될지도 모르는 객체에 사용한다.
    function getFirstCharacter(name: string) {
     function charAt(index: number) {
         // return name.charAt(index); // name 이 'null'이 될 수도 있으므로 아래와 같이 name 뒤에 느낌표를 붙여준다
         return name!.charAt(index);
     }
     return charAt(0);
    }
    

타입스크립트로 자바스크립트의 단점을 극복하고 빚을 지지 말자!

null 을 만든 사람조차도 그건 자신의 십억짜리 실수라고 말하고 있다…

In that 2009 reference Hoare describes his invention as a “billion-dollar mistake”

https://en.wikipedia.org/wiki/Null_pointer#History

❤️Typescript❤️