Partial(T) >T< 거꾸로
기존 타입의 일부 속성만 제공하는 객체를 쉽게 생성한다.
{ name, gender }
와 같이 기존에 없는 속성을 넣어서는 안됩니다!interface Person {
name: string;
age: number;
}
const updatePerson = (person: Person, fields: Partial<Person>): Person => {
return { ...person, ...fields };
};
const person: Person = { name: "Spartan", age: 30 };
const changedPerson = updatePerson(person, { age: 31 });
Required(T) >T< 거꾸로
interface Person {
name: string;
age: number;
address?: string; // 속성 명 뒤에 붙는 ?가 뭘까요
}
address는 있어도 되고 없어도 된다. (address?)
type RequiredPerson = Required<Person>;
하게 되면 필수적으로 받아야한다.
Readonly(T) >T< 거꾸로
상수화로 바꿔준다.
interface DatabaseConfig {
host: string;
readonly port: number; // 인터페이스에서도 readonly 타입 사용 가능해요!
}
const mutableConfig: DatabaseConfig = {
host: "localhost",
port: 3306,
};
const immutableConfig: Readonly<DatabaseConfig> = {
host: "localhost",
port: 3306,
};
mutableConfig.host = "somewhere";
immutableConfig.host = "somewhere"; // 오류!
Pick<T,K>
(K)원하는 것만 받겠다.
interface Person {
name: string;
age: number;
address: string;
}
type SubsetPerson = Pick<Person, "name" | "age">;
const person: SubsetPerson = { name: "Spartan", age: 30 };
Omit<T,K>
(K)만 뺀다.
interface Person {
name: string;
age: number;
address: string;
}
type SubsetPerson = Omit<Person, "address">;
const person: SubsetPerson = { name: "Alice", age: 30 };