【发布时间】:2019-08-11 06:06:21
【问题描述】:
我在构建以下打字稿代码时收到以下错误。
Property 'runStaticMethod' is a static member of type 'DemoClass'
打字稿代码:
export class Main {
constructor(private demo: DemoClass) { }
public run() {
this.demo.runStaticMethod();
}
}
export class DemoClass {
public static runStaticMethod() {
console.log('run...');
}
}
new Main(DemoClass).run();
当我构建上述 typescript 代码时,我收到以下 console 错误。但javascript 代码按预期运行。
控制台错误:
Chitty:tsc NatarajanG$ tsc
src/index.ts:5:19 - error TS2576: Property 'runStaticMethod' is a static member of type 'DemoClass'
5 this.demo.runStaticMethod();
~~~~~~~~~~~~~~~
Chitty:tsc NatarajanG$
【问题讨论】:
-
您的
demo属性不是DemoClass类型,而是typeof DemoClass类型。将其更改为它应该可以工作(尽管您可能会选择将其重构为更通用的东西......否则只需Main依赖于DemoClass构造函数而无需将其传递)。如果您对DemoClass类型和DemoClass值之间的区别感到困惑,请参阅this answer。 -
另请注意,正如所写,
DemoClass类型为空(没有非静态属性或方法),即muddling up the issue。在上面的代码中将实例属性添加到DemoClass,您还将在new Man(DemoClass)上收到错误,因为DemoClass不应属于DemoClass类型。
标签: typescript static