타입스크립트(Typescript) - 단언과 선언 의 차이

JungSik Heo·2022년 12월 25일

단언과 선언의 차이


interface Person { 
    name: string;
}

const alice: Person = { name: 'Alice' }; // 타입은 Person  
const bob = { name: 'Bob' } as Person  ; // 타입은 Person

위 alice와 bob은 결과가 같아 보이지만 다르다.

alice: Person은 변수에 '타입 선언'을 붙여서 그 값이 선언된 타입임을 명시한다.
bob은 as Person인 '타입 단언'을 수행함.
그러면 타입스크립트가 추론한 타입이 있더라도 Person 타입으로 간주한다.

타입 단언(as Type)보다는 타입 선언(: Type)을 사용해야 하는 이유

이유1. 타입 단언을 사용하면 타입 체크를 할 수 없다.
타입 선언은 할당되는 값이 해당 인터페이스를 만족하는 검사하는데, 타입 단언은 강제로 타입을 지정했으니 타입 체커에게 오류를 무시하라고 하는 것.

const alice: Person = {};
// ~ 'Person' 유형에 필요한 'name' 속성이 '{}' 유형에 없습니다.
const bob = {} as Person; // 오류 없음

profile
쿵스보이(얼짱뮤지션)

0개의 댓글