este
const { foo: IFoo[] } = bar;
e isto
const { foo: Array<IFoo> } = bar;
irá causar razoavelmente um erro.
E isto
const { foo: TFoo } = bar;
irá apenas destruir a TFoo
propriedade.
Como os tipos podem ser especificados para propriedades de objetos desestruturados?
typescript
destructuring
Estus Flask
fonte
fonte
bar
mesmo assim?Respostas:
Acontece que é possível especificar o tipo depois
:
para todo o padrão de desestruturação:O que na realidade não é melhor do que o velho
fonte
{foo}
não é um valor. É o que geralmente é chamado de "padrão de atribuição de desconstrução". O que você está vendo aqui é na verdade um recurso TypeScript especial que permite que tipos sejam associados a tais padrões.let x, y, z: string
qual aparentemente especifica o tipoz
apenas para . Eu atualizei a resposta.Estou um pouco atrasado para a festa, mas:
Os tipos de propriedades
name
eage
devem ser inferidos corretamente parastring
enumber
respectivamente.fonte
Uma continuação da minha própria pergunta.
Os tipos não precisam ser especificados para as propriedades do objeto porque são inferidos do objeto desestruturado.
Considerando que
bar
foi digitado corretamente, ofoo
tipo será inferido:Mesmo se
bar
não foi digitado corretamente (any
ouunknown
), seu tipo pode ser afirmado:fonte