interface IProfile {
name: string;
age: number;
school: string;
hobby?: string;
}
Partial 타입 :: 모든 타입에 "?" 붙임
type aaa = Partial<IProfile>;
// 결과
interface IProfile {
name?: string;
age?: number;
school?: string;
hobby?: string;
}
Required 타입 :: 모든 타입이 필수가 됨
type bbb = Required<IProfile>;
// 결과
interface IProfile {
name: string;
age: number;
school: string;
hobby: string;
}
Pick 타입 :: 골라서 사용 가능하게 됨
type ccc = Pick<IProfile, "name" | "age">;
// 결과
interface IProfile {
name: string;
age: number;
}
Omit 타입 :: 제외하고 사용 가능하게 됨
type ddd = Omit<IProfile, "school">;
// 결과
interface IProfile {
name: string;
age: number;
hobby?: string;
}
Union 타입 :: 값을 지정하고 해당 값만 사용 가능 함
type eee = "철수" | "영희" | "훈이";
// 결과
let child1: eee = "철수"; // 철수, 영희, 훈이만 가능 함
Record 타입 :: 왼쪽의 값들이 "key"로 변하고 오른쪽 값을 "type"으로 명시해서 사용 가능 함
type eee = "철수" | "영희" | "훈이";
type fff = Record<eee, number>;
// 결과
type fff = {
"철수": number,
"영희": number,
"훈이": number,
};
type VS interface 차이점
interface IProfile {
candy: number;
}
// 결과
interface IProfile {
name: string;
age: number;
school: string;
hobby?: string;
candy: number;
}
interface => 새로운 타입을 선언하면 선언 병합이 가능 함
type => 선언 병합 불가능
'STUDY > Typescript' 카테고리의 다른 글
[ Typescript ] 타입스크립트 종류 (0) | 2023.12.16 |
---|---|
[ Typescript ] 타입스크립트 기초 (0) | 2023.12.16 |
[ Typescript ] 타입스크립트를 사용하는 이유 (0) | 2023.12.16 |