【问题标题】:How to write d.ts file from existing .js file?如何从现有的 .js 文件写入 d.ts 文件?
【发布时间】:2014-09-28 01:09:56
【问题描述】:

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

【问题讨论】:

    标签: typescript


    【解决方案1】:

    您始终可以将任何对象定义为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

    【讨论】:

      猜你喜欢
      • 2017-09-22
      • 2021-09-28
      • 2018-03-23
      • 2017-04-28
      • 2018-09-23
      • 2015-10-13
      • 1970-01-01
      • 1970-01-01
      • 2012-09-23
      相关资源
      最近更新 更多