Estoy tratando de agregar compatibilidad con mecanografiado a una biblioteca javascript vainilla a través de archivos .d.ts. Estoy tratando de generar estos archivos de definición de tipo con el comando "tsc", pero me encuentro con muchos errores de "la propiedad 'propertyName' no existe en el tipo 'typeName'".
Esto sucede en líneas que intentan llamar a una función en una instancia de una clase secundaria cuando esa función está definida solo en el código de su clase principal. Parece que si bien JSDoc es capaz de inferir funciones heredadas mediante el uso de "@extends" en los comentarios JSDoc de una clase secundaria, tsc no lo es.
Por ejemplo:
ParentClass.js
/** * This is the parent class. * * @class */ export class ParentClass { parentFunction(){ console.log("Running parent function"); } }childClass.js
/** * This is a child class. * * @class * @extends {ParentClass} */ import {ParentClass} from "./ParentClass"; class ChildClass extends ParentClass { // ChildClass vars and functions here }programa.ts
import {ChildClass} from "./ChildClass"; let cc = new ChildClass(); cc.parentFunction();Al intentar compilar el código, tsc arrojará este error:
error TS2339: la propiedad 'parentFunction' no existe en el tipo 'ChildClass'.
¿Hay alguna manera de resolver este problema? Si no hay forma de hacer que el compilador de mecanografiado reconozca las propiedades heredadas, ¿hay alguna forma de hacer que tsc ignore este problema para que al menos pueda terminar de generar los archivos de definición de tipo y permitirme agregar manualmente las propiedades que faltan al tipo de clase secundaria correspondiente? definiciones?
Olvidó importar los otros archivos en childClass.js y program.js . Debería ser algo como esto:
ParentClass.js
/** * This is the parent class. * * @class */ export class ParentClass { parentFunction(){ console.log("Running parent function"); } }childClass.js
import { ParentClass } from './ParentClass' /** * This is a child class. * * @class * @extends {ParentClass} */ export class ChildClass extends ParentClass { // ChildClass vars and functions here }programa.js
import { ChildClass } from './childClass' let cc = new ChildClass(); cc.parentFunction();