728x90
타입단언 (value as typeName)
- 타입이 확실한 경우에만 사용한다.
- 타입스크립트의 눈을 속이는 느낌이랄까..
type Person = {
name: string;
age: number;
};
let person = {} as Person;
person.name = "";
person.age = 23;
const 단언
let num4 = 10 as const;
// 10 Number Literal 타입으로 단언됨
let cat = {
name: "야옹이",
color: "yellow",
} as const;
// 모든 프로퍼티가 readonly를 갖도록 단언됨
Non Null 단언
- 이 값이 undefined이거나 null이 아닐것으로 단언하는 것
type Post = {
title: string;
author?: string;
};
let post: Post = {
title: "게시글1",
};
const len: number = post.author!.length;
type Person = {
name: string;
age: number;
};
function func(value: number | string | Date | null | Person) {
if (typeof value === "number") {
console.log(value.toFixed());
} else if (typeof value === "string") {
console.log(value.toUpperCase());
} else if (value instanceof Date) {
// Date는 instanceof로 판별, typeof는 object로 나옴
console.log(value.getTime());
} else if (value && "age" in value) {
// "age"를 가질 수 있는 값은 Person밖에 없다.
// 하지만 null값일 수 있기 때문에 && 연산자로 더 안전하게 처리한다.
console.log(`${value.name}은 ${value.age}살 입니다`)
}
}
728x90
반응형
'TypeScript' 카테고리의 다른 글
TypeError: Cannot read properties of undefined (reading 'length') 의 원인과 해결 방안 (0) | 2024.03.09 |
---|---|
서로소 유니온 타입 | 한 입 크기로 잘라먹는 타입스크립트 (0) | 2024.03.03 |
타입스크립트의 기본 중, 잘 몰랐던 부분 정리 | 한 입 크기로 잘라먹는 타입스크립트 (0) | 2024.02.27 |
타입스크립트의 컴파일 과정 | 간단 예시 (0) | 2024.02.27 |