본문으로 건너뛰기

아이템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