【发布时间】:2014-09-28 01:09:56
【问题描述】:
我正在使用 typescript,我想使用 jquery.steps 库从 typescript 创建一个向导。 目前没有可用于 jquery.steps 的类型化定义文件。 试图弄清楚我们如何编写打字文件。
【问题讨论】:
标签: typescript
我正在使用 typescript,我想使用 jquery.steps 库从 typescript 创建一个向导。 目前没有可用于 jquery.steps 的类型化定义文件。 试图弄清楚我们如何编写打字文件。
【问题讨论】:
标签: typescript
您始终可以将任何对象定义为any 类型,然后调用您希望的任何方法。当然,您会丢失类型检查,因此创建 d.ts 可能更好但很耗时。
无论如何,您应该在与jquery.steps.js 相同的文件夹中创建文件jquery.steps.d.ts。那么你必须引用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");
如果使用任何特殊对象,通常是插件和类似的设置,您必须将其定义为单独的接口。接口的名称无关紧要,但属性名称必须与其在 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
【讨论】: