객체 구조 분해 (Object destructuring)

프로퍼티 이름 바꾸기

구조 분해 하면서 다른 이름을 붙일 수 있습니다.

let { a: newName1, b: newName2 } = o;

혼란스럽게도 여기서 콜론은 타입을 나타내지 않습니다. 타입을 지정하는 경우, 전체 구조 분해 뒤에 작성해야 합니다.

let { a, b }: { a: string, b: number } = o;

객체 전개는 또한 몇몇 제한 점이 있습니다. 첫째로, 객체 본인이 열거 가능한 프로퍼티만 해당한다는 것입니다. 이는 객체의 인스턴스를 전개하면 메서드를 잃게 된다는 것을 뜻합니다.

class C {
  p = 12;
  m() {
  }
}
let c = new C();
let clone = { ...c };
clone.p; // 성공
clone.m(); // 오류!

두 번째로, Typescript 컴파일러는 제네릭 함수에서 타입 매개변수를 전개하는 것을 허용하지 않습니다. 이 기능은 이후 버전에서 예상되는 기능입니다.