keyof를 사용하면, interface의 key 값들을 union 형태로 받을 수 있다.
interface User {
id: number;
name: string;
age: number;
gender: "m" | "f"
}
type UserKey = keyof User; // 'id' | 'name' | 'age' | 'gender'
❌
const uk1:UserKey = "cat"
⭕️
const uk2:UserKey = "id"
User interface에 있는 key의 값으로 할당해야한다.
property를 모두 optional로 바꿔준다.
interface User {
id: number;
name: string;
age: number;
gender: "m" | "f"
}
let admin: Partial<User> = {
id: 1,
name: "Tom",
age: 1,
}
//Partial<User>로 지정한 admin은 아래와 같다.
// interface User {
// id?: number;
// name?: string;
// age?: number;
// gender?: "m" | "f"
// }
❌
let admin: Partial<User> = {
id: 1,
name: "Tom",
age: 1,
job: "dev"
}
//job은 User에 선언되지 않은 type이기 떄문에 쓸 수 없다.
모든 property를 필수값으로 바꿔준다.
interface User {
id: number;
name: string;
age?: number;
}
let admin1: User = {
id: 1,
name: "Bob",
}
required type을 지정하지 않는다면, type 에러가 나지 않겠지만,
interface User {
id: number;
name: string;
age?: number;
}
❌
let admin: Required<User> = {
id: 1,
name: "Bob",
}
⭕️
let admin: Required<User> = {
id: 1,
name: "Bob",
age: 10,
}
User의 age를 옵셔널 type으로 지정했지만,
interface User의 모든 값을 입력해줘야한다.
property를 읽기 전용으로 바꿔준다.