如何从现有的.js文件中写入d.ts文件?

时间:2014-08-05 11:28:25

标签: typescript

我正在使用typescript,我想使用jquery.steps库从typescript创建一个向导。 目前,没有可用于jquery.steps的类型化定义文件。 试图找出如何写一个打字文件。

1 个答案:

答案 0 :(得分:14)

您始终可以将任何对象定义为any类型,然后调用您希望的任何方法。当然你会丢失类型检查,因此创建d.ts可能更好但很耗时。

无论如何,您应该在与jquery.steps.d.ts相同的文件夹中创建文件jquery.steps.js。然后你必须参考jquery.d.ts

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

现在您已准备好开始输入...

首先,您将创建接口JQuery并添加扩展标准jQuery($)对象的任何方法。这将与jquery.d.ts中定义的接口JQuery合并,您将能够从TypeScript调用这些方法。 方法名称必须与JavaScript中的名称相匹配。参数名称可以更改。返回值必须与JavaScript中的相同。

1)定义

interface JQuery {
    testMethod(parameter: string): JQuery;
}

2)用法

var $: JQuery;
$.testMethod("test");

如果使用任何特殊对象,通常是插件等的设置,则必须将其定义为单独的界面。 interace的名称无关紧要,但属性名称必须与JavaScript中的名称相匹配。

1)定义

interface IJQueryPluginSettings {
    test: string;
}

interface JQuery {
    initPlugin(settings: IJQueryPluginSettings): JQuery;
}

2)用法

var $: JQuery;
var settings: IJQueryPluginSettings = <IJQueryPluginSettings> {
    test: "test"
};

$.initPlugin(settings);

使用这种方法,您可以涵盖大部分代码。关键是命名必须匹配的方法/属性。 查看已创建的d.ts也会对您有所帮助。查看类似https://github.com/borisyankov/DefinitelyTyped/blob/master/jquery.joyride/jquery.joyride.d.ts或更复杂https://github.com/borisyankov/DefinitelyTyped/blob/master/jqueryui/jqueryui.d.ts

的插件

您不必涵盖使用它的所有方法/属性。您只能覆盖要从TypeScript调用的代码。如果您涵盖了所有或大部分jQuery插件,请将其上传到https://github.com/borisyankov/DefinitelyTyped