Tengo una pregunta sobre los conceptos básicos de TypeScript.
Considere este ejemplo:
// Interface 1 interface Empty {} // Interface 2 interface Single { a: number; } function printEmpty(arg: Empty): void { console.log(`Hello World.`); } function printSingle(arg: Single): void { console.log(`Hello World, a: ${arg.a} `) } const obj = {a: 1, b: 2}; // ===================== Tests ===================== // TEST 1 printEmpty({a: 1, b: 2}); // valid // TEST 2 // Q1: if the above is valid, why is this invalid printSingle({a: 1, b: 2}) // invalid! // TEST 3 // Q2: if the above is invalid, why is this valid printSingle(obj); // valid
el error que me sale es
Argumento de tipo
'{ a: number; b: number; }'
no se puede asignar a un parámetro de tipo'Single'
. El objeto literal solo puede especificar propiedades conocidas, y'b'
no existe en el tipo'Single'
. (2345)
¿Por qué la PRUEBA 2 falla pero la PRUEBA 1 y la PRUEBA 3 pasan?
Aquí hay una reproducción de este error en el patio de recreo oficial de TS: [ENLACE]