我们有一个大型TS应用程序,大多数是在2.0之前编写的。我们不使用模块,只使用outfile
选项。到目前为止,我们一直在使用global
类型,但现在typings
提供的一些类型不支持全局使用(据我所知)。
例如,我现在尝试使用markdown-it
的类型,它不会将任何事物暴露给全局命名空间,因此编译器找不到{{1}功能。
我很担心在这种情况下我们应该如何使用这些类型,任何提示都会受到赞赏。
示例代码:
markdownit
当我尝试
// test.ts
var result = markdownit().render("*some markdown*"); <-- `markdownit` not found
时,它当然会出错,因为我没有使用模块。所以我被卡住了。
答案 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代码产生任何影响,也不会实际要求它使用模块。