CopyTuple과 CopyArr은 객체 타입이지만 배열을 값으로 받을 수 있습니다. 이러한 현상이 가능한 이유는 구조적 타이핑 때문입니다(구조적 타이핑은 2.13절에서 좀 더 자세하게 알아봅니다).
다른 타입으로부터 값을 가져오면서 수식어를 붙일 수도 있습니다. 읽기 전용으로 만들려면 readonly를, 옵셔널로 만들려면 ? 수식어를 붙이면 됩니다.
interface Original {
name: string;
age: number;
married: boolean;
}
type Copy = {
readonly [key in keyof Original]?: Original[key];
}
/*
type Copy = {
readonly name?: string | undefined;
readonly age?: number | undefined;
readonly married?: boolean | undefined;
}
*/