let person= {}
변수를 선언해주고
type Person = {
name: string;
age: number;
}
타입을 만들어서 변수에 Person 타입을 주면 에러가 난다.
🚨let person: Person = {}
person 변수에 Person타입에 해당하는 값이 없어서.
그럼..
person.name = "이정환"
person.age = 27;
이렇게 넣어줘도 에러가 난다.
🚨let person= {}
person.name = "이정환"
person.age = 27;
그럼 다시 이렇게 Person 타입을 지워도 에러가 난다.
왜냐 person 변수는 빈값으로({}) 이미 타입 추론했기 때문에
그럼.. any를 쓸까?? 그건 안됨.
as Dog
로 타입 단언해준다.
값 as 단언 <- 단언식
A as B
- A가 B의 슈퍼타입이거나
- A가 B의 서브타입이어야 함
as const
를 붙이면 타입이 readonly가 되면 수정 불가능as const
만 넣어주면 된다.
?
를 !
로 바꿔주기 = nuil과 undefined 가 아니야!!!
</**
* 타입 단언
*/
type Person = {
name: string;
age: number;
}
let person= {} as Person
person.name = "이정환"
person.age = 27;
type Dog = {
name: string;
color: string;
}
let dog: Dog = {
name: "돌돌이",
color: "brown",
breed: "진도",
} as Dog;
/**
* 타입 단언의 규칙
* 값 as 단언 <- 단언식
* A as B
* A가 B의 슈퍼타입이거나
* A가 B의 서브타입이어야 함
*
*/
let num1 = 10 as never;
let num2 = 10 as unknown;
// 다중단언 (쓰지말자)
let num3 = 10 as unknown as string;
/**
* const 단언
*/
let num4 = 10 as const;
let cat = {
name: "야옹이",
color: "yellow",
}as const;
// cat.name = ""
/**
* Non Null 단언
*/
type Post = {
title: string;
author?: string;
};\
let post : Post = {
title: "게시글",
author: "이정환"
}
// ! === 값이 있엌!!!
const len : number = post.author!.length;