- 타입 가드와 타입 축소에 대하여2023년 02월 08일
- 루루개발자
- 작성자
- 2023.02.08.:41
반응형안녕하세요! 최근에 타입 가드와 타입 축소에 대한 용어를 처음 들어봐서
해당 용어에 대해 알아보려고 합니다.
타입 가드
타입 가드(Type Guard)는 컴파일러가 타입을 예측할 수 있도록 타입의 범위를 축소시켜 주는 것을 의미합니다.
타입 축소
말 그대로 타입의 범위를 축소하는 것을 의미합니다. 즉, 타입 가드를 해주기 위해 타입 축소를 하는 거라고 말할 수 있습니다.
타입 가드 적용 방법
타입 가드를 적용하는 방법은 다음과 같이 여러가지 방법이 있습니다.
1. typeof
function test(value) { if (typeof value !== 'string') { return; } // 여기부터는 value 를 string type 으로 확정 인식! }
위 코드와 같이 typeof 를 통해 확인한 타입이 내가 원하는 타입이 아니면 리턴을 시키고, 만약 맞다면 그 이후 코드에서는 내가 원하는 타입으로 컴파일러가 확정적으로 인식하게 됩니다.
2. instanceof
class Car { brand: string; isAuto: boolean; } class Phone { brand: string; series: 'basic' | 'plus' | 'ultra'; } function test(target: Car | Phone): void { if (target instanceof Car) { // 여기서 target 은 Car type 으로 확정 인식! return; } if (target instanceof Phone) { // 여기서 target 은 Phone type 으로 확정 인식! return; } return; }
위 코드와 같이 instaceof 를 활용하여 특정 객체가 특정 클래스에 속하는지 판별하여 타입을 축소해 줄 수 있습니다.
3. is
function isString(value: any): value is string { return typeof value === 'string'; }
is 는 typescript 에서 지원하고 있는 키워드이며, 특정 타입을 체크하는 함수에서 반환되는 값이 true 이면 해당 함수를 사용하는 블록 안에서도 인자로 받은 값의 타입을 특정 타입으로 확정시켜 줄 수 있도록 하는 기능을 합니다. 원래 특정 변수를 함수로 넘겨서 타입을 체크하게 되면 그 함수를 사용하고 있는 스코프에서는 타입 축소가 안되어 불편했었는데, 이 is 키워드를 활용하면 그 부분을 해결 할 수 있을 것 같네요.
참고 사이트
https://chanhuiseok.github.io/posts/ts-2/
https://chinsun9.github.io/2021/12/22/typescript-is-keyword/
반응형'Node.js & Javascript & Typescript' 카테고리의 다른 글
javascript 에서 aes256 암호화, 복호화 하기 (1) 2023.07.26 호이스팅 (hoisting) (2) (0) 2023.07.22 package.json 의 버전 표기법 (npm) (0) 2022.12.24 Node.js 16.15.1 설치시 npm 에서 "config global `--global`, `--local` are deprecated" 경고 발생 현상 (0) 2022.06.21 클로저(Closure)에 대해 알아봅시다. (0) 2022.06.11 다음글이전글이전 글이 없습니다.댓글