【问题标题】:How to load an external typescript module that is defined as an internal module (tsd)如何加载定义为内部模块(tsd)的外部打字稿模块
【发布时间】:2015-12-25 15:05:22
【问题描述】:

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

我有一个解决方法:通过更改 .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 的情况下获得相同的结果。我已经尝试了很多东西,但无法使其工作,并且似乎迷失在所有文档中。非常感谢您的帮助。

【问题讨论】:

    标签: typescript tsd


    【解决方案1】:

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

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

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

    【讨论】:

    • 太好了,我实际上在一个单独的文件中添加了外部和内部模块之间的这个链接片段:/// <reference path="../typings/tsd/nouislider/nouislider.d.ts"/> declare module 'noUiSlider/distribute/nouislider' { export = noUiSlider; }。这就是我一直在寻找的。谢谢!
    猜你喜欢
    • 2014-09-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-22
    • 2012-12-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多