타입 단언이란

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

위와같이 변수 personPerson타입으로 정의 되었지만 초기화 할 때에는 빈 객체를 넣어두고 싶다고 가정할 경우, 타입스크립트는 이를 허용하지 않는다. 빈 객체는 Person타입이 아니므로 오류가 발생하는 것이다.

이럴 땐 다음과 같이 빈 객체를 Person타입이라고 단언해주면 된다.

타입 단언은 다음과 같이 초과 프로퍼티 검사를 피할때에도 사용할 수 있다.

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

타입 단언의 조건

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

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


다중 단언

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

다중 단언의 경우 왼쪽에서 오른쪽으로 단언이 이루어진다. 순서대로 살펴보면 다음과 같다.

  1. number타입의 값을 unknown타입으로 단언한다.
  2. unknown타입의 값을 string타입으로 단언한다.

이렇게 중간에 값을 unknown타입으로 단언하면 unknown타입은 모든 타입의 슈퍼타입이기 때문에 모든 타입으로 또 다시 단언하는게 가능하다.

그러나, 타입 단언을 실제로 그 값을 해당 타입의 값으로 바꾸는 것이 아니라 단순 눈속임에 불과하기 때문에 위와같은 방법을 사용하면 오류가 발생할 확률이 매우 높아 권장하지 않는다.

const 단언

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

number타입이었던 num410 Number Literal타입으로 단언된다.

객체의 경우에는 모든 프로퍼티가 readonly를 갖도록 단언된다.


Non Null 단언

Non Null단언은 값 as 타입형태를 따르지 않는 단언으로, 값 뒤에 !를 붙여주면 이 값이 undefined이거나 null이 아닐것으로 단언할 수 있다.

profile
해내는 사람

0개의 댓글