Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

296
Visualizações
Escritura mecanografiada "Objeto literal solo puede especificar propiedades conocidas" no efectos en la función de retorno de Promesa

Typescript comprobará las propiedades desconocidas:

(a continuación tendrá un error: "'c' does not exist in type..." )

 interface IReturnVal { a: boolean; b: boolean; } function oh(): IReturnVal { return { a: true, b: false, c: 1, // Type '{ a: true; b: false; c: number; }' is not assignable to type 'IReturnVal'. Object literal may only specify known properties, and 'c' does not exist in type 'IReturnVal'.ts(2322) }; } oh();

Sin embargo, si las funciones devuelven Promise , Typescript solo verificará las propiedades faltantes

(a continuación tendrá un error: "Property 'a' is missing in type..." )

 interface IReturnVal { a: boolean; b: boolean; } function ok(): Promise<IReturnVal> { // Property 'a' is missing in type .... return Promise.resolve({ b: false, }); } ok();

Pero no verificar propiedades desconocidas .

(a continuación no tendrá ningún error o advertencia)

esperar: tiene el error "Object literal may only specify known properties..."

 interface IReturnVal { a: boolean; b: boolean; } function ok(): Promise<IReturnVal> { return Promise.resolve({ a: true, b: false, c: 1, // will not cause any error or warning }); } ok();

¿Es este el comportamiento esperado o me falta algo en la configuración de Typescript?

about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

La razón por la que no genera un error en su ejemplo es que su código no devuelve inmediatamente un objeto literal, sino que devuelve el resultado de llamar a una función. Las comprobaciones de propiedad en exceso solo se aplican a los objetos literales. Dado que la función ( Promise.resolve ) está devolviendo Promise<{a: boolean, b: boolean, c: number}> y eso es compatible con la asignación con el tipo de retorno Promise<{a: boolean, b: boolean}> de ok , TypeScript no se queja.

Puede hacer que TypeScript verifique el objeto literal que está pasando a Promise.resolve proporcionando un argumento de tipo a Promise.resolve :

 interface IReturnVal { a: boolean; b: boolean; } function ok(): Promise<IReturnVal> { return Promise.resolve<IReturnVal>({ // ^^^^^^^^^^^^ a: true, b: false, c: 1, // <== error here as desired }); } ok();

Enlace del patio de recreo

Alternativamente, puede hacer que ok sea una función async :

 interface IReturnVal { a: boolean; b: boolean; } async function ok(): Promise<IReturnVal> { // ^^^^^ return { a: true, b: false, c: 1, // <== error here as desired }; } ok();

Enlace del patio de recreo

Para evitar dudas: las funciones async siempre devuelven promesas. Si devuelve una no promesa, se envuelve en una promesa como si pasara a través Promise.resolve .

about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda