타입 단언에 대해서 알아보자
빈 객체에 어떠한 타입이라고 단언해주기
어떠한 타입이 정의되어 있는 객체에서 그 객체를 초기화 한 상태는 빈 객체로 저장하고 싶을때 타입 스크립트는 다음과 같은 코드를 보고 오류를 발생시킨다.
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
로 타입을 단언 했을 때 다음 조건을 만족해야한다.
말이 뭔가 어려운데 그냥 이러한 타입일 것이다 라고 말하는 것이고, 즉 서로 관계가 없는 타입에 대한 단언만 하지 않게 되면 문제는 발생하지 않을 것이다.
특정 값을
const
타입으로 단언하게 되면 변수를 const로 선언한 것과 빅슷하게 타입이 변경된다.
let apt = {
name: "자이",
place: "방배동",
} as const;
// 모든 프로퍼티가 readonly를 갖게 되며 그렇기에 값을 수정, 할당하는 행위는 불가하다.
어떠한 값이 있을수도 있고 없을수도 있는 상황에서 이 값은
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
아니라고 단언하기