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

How to load an external typescript module that is defined as an internal module (tsd)

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

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

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

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不会从正确的路径加载模块。我导出创建函数,否则我无法加载它

我怎样才能避免进行这两项更改?我很乐意自己创建一个引用内部模块定义的外部模块定义,或者在不更改 nouislider 的情况下以其他方式实现相同的结果。d.ts。我已经尝试了很多东西,但无法让它发挥作用,而且似乎在所有文档中都迷路了。非常感谢您的帮助。

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

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

这应该只是增加了在不破坏任何现有用途的情况下将其用作外部模块的可能性