TypeScript自定义定义文件

时间:2017-01-27 12:36:24

标签: typescript typescript-typings

所以我有一个第三方库,其全局函数可用,如jQuery:$ .functionName()但没有定义文件。所以我想写自己的文件,但我不能使引用/导入工作。

如果我在内联编写声明,它可以正常工作:

declare let a:string;

myClass {
   constructor() {
       console.log(a);
   }
}

但是,如果我在另一个文件中声明它,我无法使其工作:

myDeclaration.d.ts

export declare let a:string;

myClass.ts

/// <reference path="myDeclaration.d.ts" />

myClass {
   constructor() {
       console.log(a);
   }
}

我也试过import * as a from "myDeclaration"。它总是说:Cannot find name 'a'

1 个答案:

答案 0 :(得分:0)

您不应将导出与ambient声明一起使用。

只需删除你的.d.ts导出,如下所示:

declare let a:string

通常您甚至可以删除<reference path="">,因为整个项目都可以使用声明。

在为导入的模块编写定义时,应该使用export declare,例如JS npm库,并且当对象全局可用而没有任何导入时使用ambient定义(jQuery导入为例如<script>