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
文件中