• Jobs
  • About Us
  • Jobs
    • Home
    • Jobs
    • Courses and challenges
  • Businesses
    • Home
    • Post vacancy
    • Our process
    • Pricing
    • Assessments
    • Payroll
    • Blog
    • Sales
    • Salary Calculator

0

132
Views
Función mecanografiada que toma la interfaz extendida como entrada

Tengo una interfaz (en el ejemplo se llama "Ejemplo") que incluye un tipo de función ("exampleFunction"), pero esta función toma una superclase como parámetro de entrada, y mecanografiado informa un error que indica que no puedo usar subtipos como entrada porque tienen algunas propiedades que no están presentes en el supertipo.

Aquí hay un ejemplo:

 interface SuperType { propertyA: string } interface SubTypeA extends SuperType { subPropertyA: number } interface SubTypeB extends SuperType { subPropertyB: number } interface Example { exampleFunction: (input: SuperType) => void }

tengo un problema si escribo:

 const example: Example = { exampleFunction: (input: SubTypeA) => {console.log("nothing")} }
over 3 years ago · Juan Pablo Isaza
1 answers
Answer question

0

El problema es más fácil de detectar si hace que su función use solo la propiedad SubTypeA .

 const example: Example = { exampleFunction: (input: SubTypeA) => {console.log(input.subPropertyA.toFixed())} }

La función en sí es perfectamente válida (acepta un argumento SubTypeA y accede a una de las propiedades. Sin embargo, el tipo Example solo puede garantizar que se pase un SuperType . Por lo tanto, no se puede garantizar que existan las otras propiedades únicas de SubTypeA .

Por ejemplo:

 const superType: SuperType = { propertyA: 'foo' } example.exampleFunction(superType) // valid call, but crashes because `subPropertyA` doesn't exist

¿Quizás una solución es hacer que su función maneje un SuperType o un SubTypeA ?

 const example: Example = { exampleFunction: (input: SuperType | SubTypeA) => { if ('subPropertyA' in input) { console.log(input.subPropertyA.toFixed()) } } } const superType: SuperType = { propertyA: 'foo' } example.exampleFunction(superType) // works const subTypeA: SubTypeA = { propertyA: 'foo', subPropertyA: 123 } example.exampleFunction(subTypeA) // works

Patio de juegos

over 3 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Our process Sales
Legal
Terms and conditions Privacy policy
© 2025 PeakU Inc. All Rights Reserved.

Andres GPT

Show me some job opportunities
There's an error!