Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

298
Vistas
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 Respuestas
Responde la pregunta

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 Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda