作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试通过 .d.ts 文件向 vanilla javascript 库添加 typescript 支持。我正在尝试使用“tsc”命令生成这些类型定义文件,但我遇到了很多“类型‘typeName’上不存在属性‘propertyName’”的错误。
当该函数仅在其父类的代码中定义时,这发生在试图调用子类实例上的函数的行上。看起来虽然 JSDoc 能够通过在子类的 JSDoc 注释中使用“@extends”来推断继承的函数,但 tsc 不能。
例如:
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
}
program.ts
import {ChildClass} from "./ChildClass";
let cc = new ChildClass();
cc.parentFunction();
尝试编译代码时,tsc 将抛出此错误:
error TS2339: Property 'parentFunction' does not exist on type'ChildClass'.
有什么办法可以解决这个问题吗?如果没有办法让 typescript 编译器识别继承的属性,有没有办法让 tsc 忽略这个问题,这样它至少可以完成类型定义文件的生成,并允许我手动将缺少的属性添加到相应的子类类型定义?
最佳答案
您忘记导入 childClass.js
和 program.js
上的其他文件。它应该是这样的:
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
}
program.js
import { ChildClass } from './childClass'
let cc = new ChildClass();
cc.parentFunction();
关于javascript - 如何在 tsc 从 .js 文件生成的类型定义中包含继承的属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72588687/
我是一名优秀的程序员,十分优秀!