아이템23
한꺼번에 객체 생성하기
- 객체는 일반적으로 한번에 생성하는게 좋다.
const pt = {}
pt.x = 3 //속성이 없어 실행되지 안흔ㄴ다.
// 객체는 한번에 생성하는 것이 좋음
const pt: Point = {
x: 3,
y: 4,
}
// 확장시 스프레드 연산자 활용
const namedPoint = { ...pt, ...id }
// 조건부 속성 확장 시
전개 연산자를 이용해 더 큰 타입 생성
const namedPoint = { ...pt, ...id };
namedPoint.name; // 정상, 타입이 string
/// 여러개 속성 추가
declare let hasDates: boolean;
const nameTitle = { name: "Khufu", title: "Pharaoh" };
const pharaoh = {
...nameTitle,
...(hasDates ? { start: -2589, end: -2566 } : {}),
};
- 선택적 필드 활용법
function addOptional<T extends object, U extends object>(
a: T,
b: U | null
): T & Partial<U> {
return { ...a, ...b };
}
const pharaoh = addOptional(
nameTitle,
hasDates ? { start: -2589, end: -2566 } : null
);
pharaoh.start; // 정상, 타입이 number | undefined