<아이스 아메리카노>
<배열 뒤집기>
기존에 없는 속성을 넣어서는 안됩니다!
interface Person {
name : string;
age : number;
}
const updatePerson = (person : Person, fields : Partical): Person => {return {...person, ...fields};
;}
const person : Person = {name: "Spartan", age:30};
const chagnedPerson = updatePersonn (person, {age:31});
field 구성 될 수 있는 경우의 수
name이라는 속성만/ age라는 속성만 / name, age라는 속성이 둘 다,
이 밖의 상황은 허용하지 않아요!
Readonly : "타입의 속성들로 구성된 객체가 아니어도 완전한 불변 객체로 취급"
-타입 T의 모든 속성을 읽기 전용(read-only)으로 만들어요!
interface DatabaseConfig {
host: string;
readonly port: number; // 인터페이스에서 readonly 타입 사용 가능
}
const mutableConfig: DatabaseConfig = {
host: "localhost",
port: 3306,
};
const immutableConfig: Readonly<DatabaseConfig> = {
host: "localhost",
port: 3306,
};
Pick<T, K>
타입 T에서 K 속성들만 선택하여 새로운 타입을 만듭니다!
interface Person {
name: string;
age: number;
address: string;
}
type SubsetPerson = Pick<Person, "name" | "age">;
const person: SubsetPerson = { name: "Spartan", age: 30 };
타입 T에서 K 속성들만 제외한 새로운 타입을 만듭니다!
-Pick<T, K> 유틸리티 타입과는 반대의 동작이죠!
interface Person {
name: string;
age: number;
address: string;
}
type SubsetPerson = Omit<Person, "address">;
const person: SubsetPerson = { name: "Alice", age: 30 };
더 많은 유탈리티 타입 참고
https://www.typescriptlang.org/ko/docs/handbook/utility-types.html