如何使用某些方法编译ts代码,该方法未在d.ts文件中声明,但这个是在js文件中?

时间:2015-11-15 14:50:21

标签: typescript

我正在使用定义ts文件,但是这个文件不包含我应该在我的TypeScript代码中使用的方法。但是这个方法是在javascript文件中定义的。

TypeScript编译器写道它无法找到被调用的方法。

是否可以使用某种方法编译打字稿代码,这种方法在定义ts文件中尚未声明,但此方法是在javascript文件中定义的?

也许我可以通过调用方法来设置一些设置来编译typescript代码,而这个方法没有在d.ts文件中声明?

3 个答案:

答案 0 :(得分:1)

是的,您要找的是Ambient Internal/External Moduleshttp://www.typescriptlang.org/Handbook#modules-working-with-other-javascript-libraries

例如:

declare module D3 {
    export interface Selectors {
        select: {
            (selector: string): Selection;
            (element: EventTarget): Selection;
        };
    }

    export interface Event {
        x: number;
        y: number;
    }

    export interface Base extends Selectors {
        event: Event;
    }
}

您可以将此代码放入.ts文件中,也可以创建自己的.d.ts文件。

答案 1 :(得分:1)

这取决于d.ts(您正在使用的库)。

TypeScript命名空间(又称模块)和接口是开放式的 - 这意味着您可以直接在代码中声明缺少的方法(不需要更改外部d.ts)。

或者,您可以在调用missing方法时将库键入any - 然后不对库/变量进行类型检查。

var a = (<any>$).missingMethod(); 

答案 2 :(得分:0)

您必须在文件顶部使用/// <reference path="path/file.ts" />从IDE(至少在Visual Studio中)获取有关该文件中可用内容的一些提示,并且还需要将其包含在您的包中或添加您的html文件中的脚本,将其包含在使用其方法的其他ts文件之前。