한 입 크기로 잘라먹는 Ts - 타입 단언

한 입 크기로 잘라먹는 Ts - 타입 단언

타입 단언이란

·

2 min read

이정환 님의 한 입 크기로 잘라먹는 타입스크립트 를 수강한 내용 입니다.

타입 단언

1

변수 person은 Person 타입으로 정의 되었지만 초기화 할 때에는 빈 객체를 넣어두고 싶다고 가정 하겠습니다.

  • 그러나 타입스크립트에서는 이런 경우를 허용하지 않습니다.

  • 빈 객체는 Person 타입이 아니므로 오류가 발생하게 됩니다.

그렇다면 추후에 빈 객체를 채울 방법은 없을까?

값 as 타입

그런 경우, 다음과 같이 빈 객체를 Person 타입이라고 타입스크립트에게 단언해주면 됩니다.

2

값 as 타입 으로 특정 값을 원하는 타입으로 단언할 수 있습니다.

  • 이를 타입 단언 이라고 부릅니다.

타입 단언은 초과 프로퍼티 검사를 피할 때 사용 가능

3

breed 라는 초과 프로퍼티가 존재하지만 이 값을 Dog 타입으로 단언하여 초과 프로퍼티 검사를 피했습니다.

타입 단언의 조건

값 as 타입 형식의 단언식을 A as B로 표현했을 때 아래의 두 가지 조건 중 한 가지를 반드시 만족해야 합니다.

  • A가 B의 슈퍼타입이다.

  • A가 B의 서브타입이다.

4

타입 계층도를 참고해서 이해 할 수 있습니다.

5

다중 단언

타입 단언은 다중으로도 가능 합니다.

  • 다중 단언의 경우 왼쪽에서 오른쪽으로 단언이 이루어집니다.

6

위의 예시는 먼저

  1. number 타입의 값을 ➡️ unknown 타입으로 단언합니다.

  2. unknown 타입의 값을 ➡️ string 타입으로 단언합니다.

중간에 값을 unknown 타입으로 단언하면 unknown 타입은 모든 타입의 슈퍼타입이므로

  • 모든 타입으로 또 다시 단언 하는게 가능합니다.

하지만 해당 타입의 값으로 바꾸는 것이 아니라 눈속임에 불과하기 때문에 사용하지 않는 것을 권장 합니다.

const 단언

타입 단언때에만 사용할 수 있는 const 타입이 존재 합니다.

  • 특정 값을 const 타입으로 단언하면 마치 변수를 const로 선언한 것 과 비슷하게 타입이 변경 됩니다.

7

Non Null 단언

값 뒤에 느낌표(!) 를 붙여주면 이 값이 undefined 이거나 null이 아닐 것으로 단언할 수 있습니다.

8

  • author 라는 프로퍼티가 있다고 강조(무조건 string)

  • .length 를 사용할 수 있게 됩니다.