ts의 유틸리티 타입정리해보기
대괄호로 객체를 접근하는 타입
type humanInfo = {
[name: string] : number
};
let human: humanInfo = {
"김태완" : 30,
"이도경" : 29,
"장재형" : 29,
}
인덱스 시그니처에서 사용하지 못하는 문자열 리터럴을 허용함
type names = "김태완" | "이도경" | "장재형";
type humanInfo = Record<names, number>
let human: humanInfo = {
"김태완" : 30,
"이도경" : 29,
"장재형" : 29,
}
파셜타입은 특정 타입의 부분집합을 만족하는 타입이다
interface People {
name: string;
age: number;
}
type Gamer = Partial<People>;
const ktw:Gamer = {}; // ok
const ktw:Gamer = { name:"ktw"}; // ok
const ktw:Gamer = { name:"ktw", age: 29}; // ok
픽타입은 특정 타입의 몇개속성을 선택해서 타입을 지정한다
interface People {
name: string;
age: number;
address: string;
married : boolean;
}
type User = Pick<People, "name" | "age">;
const ktw:User = { name: "ktw"} // ok
const ktw:User = { age: 30} // ok
const ktw:User = { name: "ktw", age: 30} // ok
오밋타입은 특정 속성만 제거하여 타입을 지정한다.
interface People {
name: string;
age: number;
address: string;
married : boolean;
}
// Pick<People, "name" | "age">이랑 동일
type User = Omit<People, "address" | "married">;
const ktw:User = { name: "ktw"} // ok
const ktw:User = { age: 30} // ok
const ktw:User = { name: "ktw", age: 30} // ok