如何加载定义为内部模块的外部打字稿模块(tsd)

时间:2015-12-25 15:05:23

标签: typescript tsd

我正在尝试在我的项目中加载nouislider模块:使用SystemJs 0.19.4的Angular 2 beta-0,Typescript 1.7。

我有一个解决方法:通过更改为我安装的.d.ts文件tsd。我想知道在不改变原始打字稿定义文件的情况下加载模块可以做什么,如果有的话:nouislider.d.ts

通过我的更改,我现在可以加载nouislider并在我的使用SystemJs的Typescript项目中使用它,如下所示:

import {create as createSlider}  from 'noUiSlider/distribute/nouislider';
createSlider(document.getElementById('test-slider'), {
  start: 40,  connect: "lower",
  range: { 'min': 0, 'max': 100 }
});

我所做的工作是将nouislider.d.ts顶部的这两行改为:

declare module noUiSlider {
    function create(target: HTMLElement, options: Options): void;

declare module 'noUiSlider/distribute/nouislider' {
    export function create(target : HTMLElement, options : Options) : void;

我将模块的名称设置为'noUiSlider / distribute / nouislider',否则System.js不会从正确的路径加载模块。我导出了create函数,因为否则我无法加载它

如何防止进行这两项更改?我非常满意自己创建一个外部模块定义,引用内部模块定义或以其他方式实现相同的结果,而无需更改nouislider.d.ts。我已经尝试了很多东西,但是无法使它工作,似乎在所有文档中都迷失了。非常感谢您的帮助。

1 个答案:

答案 0 :(得分:2)

除了在DefinitelyTyped上创建拉取请求并提议添加

之外,我无能为力
declare module 'noUiSlider/distribute/nouislider' {
     export = noUiSlider;
}

这应该只是添加将其用作外部模块而不破坏任何现有用途的可能性