[typescript] 객체 비 구조화의 유형

const { foo: IFoo[] } = bar;

const { foo: Array<IFoo> } = bar;

합리적으로 오류가 발생합니다.

const { foo: TFoo } = bar;

TFoo재산을 파괴 합니다.

해체 된 객체 속성에 대해 유형을 어떻게 지정할 수 있습니까?



답변

:전체 디스트 럭처링 패턴에 대해 유형을 지정할 수 있습니다 .

const {foo}: {foo: IFoo[]} = bar;

실제로는 평범한 오래된 것보다 낫지 않습니다.

const foo: IFoo[] = bar.foo;


답변

나는 분명히 파티에 조금 늦었지만 :

interface User {
  name: string;
  age: number;
}

const obj: any = { name: 'Johnny', age: 25 };
const { name, age }: User = obj;

속성의 종류 name와는 age올바르게에 유추해서도 안 string하고 number각각.


답변

내 질문에 대한 후속 조치입니다.

유형은 구조화 해제 된 객체에서 유추되기 때문에 객체 속성에 대해 지정할 필요가 없습니다.

bar올바르게 입력 된 것을 고려하면 foo유형이 유추됩니다.

const bar = { foo: [fooValue], ... }; // bar type is { foo: IFoo[], ... }
...
const { foo } = bar; // foo type is IFoo[]

bar올바르게 입력되지 않았 더라도 ( any또는 unknown) 유형을 주장 할 수 있습니다.

const { foo } = bar as { foo: IFoo[] }; // foo type is IFoo[]


답변