Typescript 如何在同一文件中导出类和接口?
考虑以下类型脚本文件:Typescript 如何在同一文件中导出类和接口?,typescript,Typescript,考虑以下类型脚本文件: // declare a jquery plugin, so that it can be used in the class interface JQueryStatic { plot(arg: any, arg2: any, arg3: any): JQueryStatic; } export class Foo { public plotThings() { $.plot('#myDiv'); // ERROR HERE
// declare a jquery plugin, so that it can be used in the class
interface JQueryStatic {
plot(arg: any, arg2: any, arg3: any): JQueryStatic;
}
export class Foo {
public plotThings() {
$.plot('#myDiv'); // ERROR HERE
// TS2339 (TS) Property 'plot' does not exist on type 'JQueryStatic'
}
}
因此,它无法找到plot
方法。但是,如果我从类声明中删除export
,则文件编译良好
那么,我怎样才能同时拥有JQueryStatic接口(能够使用jQuery插件)和导出的类呢?您不能仅仅扩展在其他地方声明的接口。Typescript为每个文件命名所有内容,因此它无法知道您指的是jQuery类型定义声明的全局接口 因此,创建一个
jquery.d.ts
文件,将特定于jquery的扩展名放入其中,并添加这个扩展名,明确表示您指的是全局扩展名
declare global {
interface JQuery {
plot(arg: any, arg2: any, arg3: any): JQuery;
}
}
我已经在文件中将其声明为全局权限,并且似乎有效。这可能会在以后的其他地方引起问题吗?只要你只使用该文件中的这个插件就可以了。否则,您可能需要将其放入
.d.ts
文件中