如何使用提供外部模块全局的打字?

时间:2016-10-24 10:08:18

标签: typescript typescript-typings

我们有一个大型TS应用程序,大多数是在2.0之前编写的。我们不使用模块,只使用outfile选项。到目前为止,我们一直在使用global类型,但现在typings提供的一些类型不支持全局使用(据我所知)。

例如,我现在尝试使用markdown-it的类型,它不会将任何事物暴露给全局命名空间,因此编译器找不到{{1}功能。

我很担心在这种情况下我们应该如何使用这些类型,任何提示都会受到赞赏。

示例代码:

markdownit

当我尝试 // test.ts var result = markdownit().render("*some markdown*"); <-- `markdownit` not found 时,它当然会出错,因为我没有使用模块。所以我被卡住了。

1 个答案:

答案 0 :(得分:1)

假设您确实想将markdown-it用作全局变量markdownit,您可以在自己的文件中声明augments global scope(此功能是2.0中的新功能)。

创建文件markdown-it-global.d.ts

declare module 'markdown-it-global' {

    import * as MarkdownIt from 'markdown-it';

    global {
        var markdownit: typeof MarkdownIt;
    }

}

这声明了一个增加全局范围的环境模块 - 如果将markdown-it-global.d.ts与所有其他类型的源文件和声明typing/index.d.ts一起包含在内,它将使全局变量markdownit随处可用。

里面的import使用markdown-it typings声明一个模块,但它只用于类型检查,它不会对生成的javascript代码产生任何影响,也不会实际要求它使用模块。