📎아이템 3 코드 생성과 타입이 관계없음을 이해하기
📍타입스크립트 컴파일러의 두 가지 역할
📍타입 오류가 있는 코드도 컴파일이 가능하다
컴파일과 타입체크
📍런타임에는 타입체크가 불가능하다
interface Square {
width: number;
}
interface Rectangle extends Square {
height: number;
}
type Shape = Square | Rectangle;
function calculateArea(shape: Shape) {
if (shape instanceof Rectangle) {
// ~~~~~~~~~ 'Rectangle' only refers to a type,
// but is being used as a value here
return shape.height * shape.width;
// ~~~~~~ Property 'height' does not exist on type 'Shape'
} else {
return shape.width * shape.width;
}
}⭐️ shape 타입을 명확하게 하려면, 런타임에 타입 정보를 유지하는 방법이 필요하다. height 속성이 존재하는지 체크해보자.
shape 타입을 명확하게 하려면, 런타임에 타입 정보를 유지하는 방법이 필요하다. height 속성이 존재하는지 체크해보자.⭐️ 타입 정보를 유지하는 또 다른 방법으로는 런타임에 접근 가능한 타입 정보를 명시적으로 저장하는 '태그' 기법
⭐️ 타입(런타임 접근 불가)과 값(런타임 접근 가능)을 둘 다 사용하는 기법
📍타입 연산은 런타임에 영향을 주지 않는다
📍런타임 타입은 선언된 타입과 다를 수 있다
⭐️ 네트워크 호출로부터 받아온 값으로 함수를 실행하는 경우가 있다.
📍타입스크립트 타입으로는 함수를 오버로드할 수 없다
📍타입스크립트 타입은 런타임 성능에 영향을 주지 않는다
📍요약
Last updated