클래스, 함수, 인터페이스를 다양한 타입으로 재사용 가능
Key of interface
인터페이스의 키 값들을 유니온 형태로 얻을 수 있음
interface User {
name : string;
age : number;
gender : 'M' | 'F';
}
const userKey = keyof User
console.log(userKey)
//'name' | 'age' | 'gender'
Partial<interface>
인터페이스의 프로퍼티를 모두 옵셔널로 바꿔줌
interface User {
name : string;
age : number;
gender : 'M' | 'F';
id: number;
}
let admin: Partial<User> = {
name: 'bob',
id: 1
}
Required<interface>
인터페이스의 프로퍼티를 모두 필수 조건으로 바꿔줌
interface User {
name?: string;
age?: number;
gender?: 'M' | 'F';
id?: number;
}
let admin: Required<User> = {
name: 'bob',
age: 25,
gender: 'F',
id: 2
}
Readonly<interface>
Record<Key,Type>
Pick<Interface,key>
인터페이스에서 특정 프로퍼티(키)만 골라서 사용 가능
Omit<Interface,key>
인터페이스 특정 프로퍼티(키)만 제외하고 사용 가능
interface User {
id: number;
name: string;
age: number;
gender: 'M' | 'F';
}
const admin: Omit<User, "id" | "name> = {
age: 26,
gender: 'F'
}
Exclude<Types,Type>
omit은 프로퍼티(키)로 제외시키고, exclude는 타입으로 제외시킴
type Types = string | number | object | void
type ExcludeType = Exclude<Types, void | object>
//ExcludeType의 타입은 string | number 가 됨
null을 제외한 타입 생성, 근데 undefined도 같이 뺌