타입스크립트 - 타입단언

dobyming·2022년 12월 23일
0

Typescript Study

목록 보기
13/17

타입 단언


타입 단언은 추론과 달리, 개발자가 직접 type을 명시해주는 작업입니다.

interface Developer {
    name: string;
    skill: string;
}
interface Person {
    name: string;
    age: number;
}

function introduce(): Developer | Person {
    return { name: 'Tony', age: 22, skill: 'Iron making'}
}
var tony = introduce();
console.log(tony.skill); //error code (union 교집합 특징) 

다음과 같이 인터페이스 2개를 선언하고, introduce() 함수를 정의하여 tony 변수에 할당 후, skill이라는 element에 접근하려고 할때 Union의 특징으로 인해 에러를 뱉어냅니다.

이때 이런 부분을 해결할 수 있는 첫번째 방법은 타입 단언입니다.

var tony = introduce();

if ((tony as Developer).skill) {
    console.log((tony as Developer).skill)
} else if ((tony as Person).age) {
    console.log((tony as Person).age);
} //타입 단언 활용하여 union type 접근

as 문법은 타입 단언을 할때 사용되는 문법입니다.

따라서 tonyDeveloper 의 인터페이스 규약을 따른다는것을 단언하게 되면 Union 특징으로 인해 접근하지 못했던 skill을 접근할 수 있습니다.

하지만 타입 단언 역시 완벽한 코드는 아닙니다. 예시 코드보다 훨씬 더 많은 타입에 대한 제한이 필요해질때, 그때마다 ‘as 인터페이스’ 구문을 선언하게 되면 코드의 길이가 길어지고 가독성이 떨어집니다.

이 부분을 리팩토링 할 수 있는 부분이 타입 가드 입니다.

타입가드는 다음 포스팅에서 이어집니다..

0개의 댓글