타입스크립트로 작성된 코드를 보다가 data!.list
이렇게 쓰여있는 코드를 발견하고 찾아보았는데 타입스크립트에 느낌표 operator가 있다는 것을 알게되었다.
https://www.typescriptlang.org/docs/handbook/advanced-types.html#nullable-types
Nullable 타입(null 이나 undefined)은 string 이나 number 같은 다른 타입으로 선언되어 있는 값에 서브타입으로 쓰여질 수 있다.
그러면서 런타임 에러를 자주 발생시키는데 이를 타입스크립트에서는 방어할 수 있는 대안을 주고있다.
- 컴파일 옵션으로
--strictNullChecks
을 주어서 null 타입이 아닌데 null 을 선언할 수 없게 하거나,let name: string; name = null // 'string' 타입에 'null'이 대입될 수 없다
- 그럼에도 컴파일러가 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❤️