이정환 님의 한 입 크기로 잘라먹는 타입스크립트 를 수강한 내용 입니다.
타입 단언
변수 person은 Person 타입
으로 정의 되었지만 초기화 할 때에는 빈 객체를 넣어두고 싶다고 가정 하겠습니다.
그러나 타입스크립트에서는 이런 경우를 허용하지 않습니다.
빈 객체는 Person 타입이 아니므로 오류가 발생하게 됩니다.
그렇다면 추후에 빈 객체를 채울 방법은 없을까?
값 as 타입
그런 경우, 다음과 같이 빈 객체를 Person 타입이라고 타입스크립트에게 단언해주면 됩니다.
값 as 타입 으로 특정 값을 원하는 타입으로 단언할 수 있습니다.
- 이를 타입 단언 이라고 부릅니다.
타입 단언은 초과 프로퍼티 검사를 피할 때 사용 가능
breed 라는 초과 프로퍼티가 존재하지만 이 값을 Dog 타입으로 단언하여 초과 프로퍼티 검사를 피했습니다.
타입 단언의 조건
값 as 타입 형식의 단언식을 A as B로 표현했을 때 아래의 두 가지 조건 중 한 가지를 반드시 만족해야 합니다.
A가 B의
슈퍼타입
이다.A가 B의
서브타입
이다.
타입 계층도를 참고해서 이해 할 수 있습니다.
다중 단언
타입 단언은 다중으로도 가능 합니다.
- 다중 단언의 경우 왼쪽에서 오른쪽으로 단언이 이루어집니다.
위의 예시는 먼저
number 타입의 값을 ➡️ unknown 타입으로 단언합니다.
unknown 타입의 값을 ➡️ string 타입으로 단언합니다.
중간에 값을 unknown 타입으로 단언하면 unknown
타입은 모든 타입의 슈퍼타입이므로
- 모든 타입으로 또 다시 단언 하는게 가능합니다.
하지만 해당 타입의 값으로 바꾸는 것이 아니라 눈속임에 불과하기 때문에 사용하지 않는 것을 권장 합니다.
const 단언
타입 단언때에만 사용할 수 있는 const 타입이 존재 합니다.
- 특정 값을 const 타입으로 단언하면 마치 변수를 const로 선언한 것 과 비슷하게 타입이 변경 됩니다.
Non Null 단언
값 뒤에 느낌표(!)
를 붙여주면 이 값이 undefined
이거나 null이
아닐 것으로 단언할 수 있습니다.
author 라는 프로퍼티가 있다고 강조(무조건 string)
.length 를 사용할 수 있게 됩니다.