본문 바로가기
프론트엔드/TS 공부

타입 단언

by 학습하는 청년 2024. 5. 28.

최종 수정 : 2024-05-28

타입 단언(type assertion)

type Person = {
  name: string;
  age: number;
};

let person = {} as Person;
person.name = 'yeongtaek';
person.age = 33;

 

초과 프로퍼티가 적용되지 않을 때, 타입 단언을 사용하면 가능하다.

type Dog = {
  name: string;
  color: string;
};

let dog = {
  name: '돌돌이',
  color: 'brown',
  breed: '진도',
} as Dog;

타입 단언의 규칙

규칙을 만족할 때 쓰는 것이 좋다.

  1. A가 B의 슈퍼타입이거나
  2. A가 B의 서브타입이어야 한다.
// 가능
let num1 = 10 as never;
let num2 = 10 as unknown;

// 불가능
let num3 = 10 as string;
==> 다중 단언을 하면 가능(그러나 비추!! 타입스크립트를 쓸 이유가 없어진다..)
let num3 = 10 as unknown as string;

const 단언

프로퍼티가 readonly 속성으로 타입 추론된다.

let num4 = 10 as const;

let cat = {
  name: '야옹이',
  color: 'yellow',
} as const;

cat.name = '' // 읽기 전용 속성이므로 'name'에 할당할 수 없습니다.

Non null 단언

null과 undefined가 아님을 단언해주는 것

type Post = {
  title: string;
  author?: string;
};

let post: Post = {
  title: '게시글1',
  author: 'yeongtaek',
};

const len: number = post.author!.length;

댓글