[아티클럽] 올해 버려야 할 타입스크립트 나쁜 버릇 10가지를 읽고
2021년 05월 17일, 22:21
타입스크립트를 할 때 주의해야할 점 10가지
-
tsconfig.json의 strict 옵션을 꼭 설정한다.
- 엄격한 룰을 적용시켜놓으면 개발을 하는 과정에서는 힘들지 몰라도 추후 유지보수 과정에서 시간을 절약할 수 있다.
-
default 값을 정의해서 사용한다.(?? 연산자를 사용한다)
- 파라미터에 default값을 설정해주거나, ??를 이용해서 null 혹은 undefined인 경우에 default 값을 정의해준다.
-
any 타입보다는 unknown을 사용한다.
- any의 경우는 타입 검증을 무력하게 만든다. any의 경우는 type을 체킹해주지 않아도 property에 접근하는 경우 에러가 나지 않지만, unknown은 에러가 난다
- unknown의 경우는 타입 체크가 필수적이므로 any보다 안전하다.
-
val as SomeType을 지양하자.
- type이 실제로 맞는지 아닌지 검증이 이루어지지 않은 경우가 생길 수 있다. 그러므로 타입 가드를 이용해서 타입을 검증을 해주는 것이 더 좋다.
-
테스트에서의 as any를 사용하지 말자.
-
옵셔널 프로퍼티
// 나쁜 코드 interface Product { id: string type: 'digital' | 'physical' weightInKg?: number sizeInMb?: number } // 좋은 코드 interface Product { id: string type: 'digital' | 'physical' } interface DigitalProduct extends Product { type: 'digital' sizeInMb: number } interface PhysicalProduct extends Product { type: 'physical' weightInKg: number }
타입을 사용했을때 가장 큰 장점은 런타임에서 문제가 발생하기 전에 알 수 있다는 점이다.
좀 더 명시적인 타입을 가질수록 발견되지 않을 수 있었던 버그에 대한 컴파일 타입 검사를 받을 수 있다. -
한 문자 제너릭을 지양하자.
- 제너릭 타입 변수도 변수다. 이름에 의미가 있으면 더욱 파악하기 쉽다.
-
boolean이 아닌 것의 boolean 검사
- 0, ''의 경우 false로 취급되는데, 이러한 상황을 위해서 !== undefined or !== null과 같이 명시적으로 해주면 좋다.(실제로 확인하길 원하는 것이 명확해야한다.)
-
!!과 같은 형태를 사용 금지하자.
- 숏코드는 이해가 어렵게 만든다. 또 이러한 경우가 잠재적인 버그를 생성할 수 있다.
-
!= 보다는 !== 엄격한 연산자를 사용한다.