Type Script - 5

donggae·2023년 12월 17일
0

TypeScript

목록 보기
5/6
post-thumbnail

타입 단언에 대해서 알아보자

타입 단언?

빈 객체에 어떠한 타입이라고 단언해주기

어떠한 타입이 정의되어 있는 객체에서 그 객체를 초기화 한 상태는 빈 객체로 저장하고 싶을때 타입 스크립트는 다음과 같은 코드를 보고 오류를 발생시킨다.

type Korea = {
	name: string;
  	city: string;
}

let korea:Korea = {};

korea.name = "대한민국";
korea.city = "서울";
  • 빈 객체로 타입이 추론 되기에 name, city에 접근을 할 수 없다. 그럼 어떻게 해야할까?
  • 타입 단언 을 통해 오류를 개선해보자
type Korea = {
	name: string;
  	city: string;
}

let korea:Korea = {} as Korea;

korea.name = "대한민국";
korea.city = "서울";

위와 같이 값 as 타입 을 통해 원하는 타입으로 단언을 할 수 있게 된다.

타입 단언시 조건

A as B로 타입을 단언 했을 때 다음 조건을 만족해야한다.

  • A가 B의 슈퍼타입
  • A가 B의 서브타입

말이 뭔가 어려운데 그냥 이러한 타입일 것이다 라고 말하는 것이고, 즉 서로 관계가 없는 타입에 대한 단언만 하지 않게 되면 문제는 발생하지 않을 것이다.

const 단언

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

let apt = {
	name: "자이",
  	place: "방배동",
} as const;
// 모든 프로퍼티가 readonly를 갖게 되며 그렇기에 값을 수정, 할당하는 행위는 불가하다.

Non Null 단언

어떠한 값이 있을수도 있고 없을수도 있는 상황에서 이 값은 undefined, null이 아닐것이라고 단언할 수 있다.

type Person = {
	name: string,
  	gf?: string,
};

let person: Person = {
	name: "현",
  	gf: "있을수도있고 없을수도있고",
};

const len: number = person.gf?.length; // 오류를 발생시킨다.

const len: number = person.gf!.length;
  • !를 통해 이 값이 undefined, null 아니라고 단언하기
profile
아자자자

0개의 댓글