使用TypeScript的Amd模块和DefinitelyTyped d.ts文件

4

我大多数情况下是通过NuGet从https://github.com/borisyankov/DefinitelyTyped导入我的DefinitelyTyped模块。

我想知道是否有什么我忽略了,因为我发现它们都缺少AMD支持。

在大多数模块中,我自己添加了以下内容:

declare module "toastr" {
    export = Toastr;
}
declare module "knockout.validation" {
    export = KnockoutValidationStatic;
}
declare module "knockoutmapping" {
    export = KnockoutMapping;
}
declare module "jquery" {
    export = $;
}

在这个过程中,我可以做到以下几点:

import $ = require('jquery');
import toastr = require('toastr');

并且它可以正确地生成我的 AMD 模块。

define(["require", "exports", 'toastr'], function(require, exports, __toastr__) {

}

我在思考是否有其他方法来完成这个任务,因为我发现大部分库中的d.ts文件中缺少了amd导出定义。

1个回答

0

有些定义确实有这个部分,例如Underscore。为什么许多定义没有这个部分是因为导入的名称取决于您如何配置requirejs以及您在配置中选择的短路径名称。


1
拿jQuery来说吧。我查看了源代码,他们确实将其配置为jquery的名称。我向GitHub推送了更新,也被接受了,所以我猜这就是正确的做法了 :) 感谢你的回答。 - Poul K. Sørensen
奖励问题:我需要在同一个d.ts文件中定义外部模块吗?正如你所说,这取决于我的本地配置,那么我可以创建一个名为myconfiguration.d.ts的文件,其中包含所有这些本地短名称吗? - Poul K. Sørensen
“local configuration” 是指 requirejs 的路径配置:http://requirejs.org/docs/api.html#config-paths 例如,请查看 http://requirejs.org/docs/api.html#pathsfallbacks。 - basarat
回答myconfiguration.d.ts,没问题。我通常会创建一个vendor.d.ts文件(一直都是这样),其中包含对供应商.d.ts文件的引用以及此类配置和我发现缺少的任何配置,稍后我将发送拉取请求。 - basarat

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接