【问题标题】:TypeScript module types for UMD globals?UMD 全局变量的 TypeScript 模块类型?
【发布时间】:2018-09-06 09:43:36
【问题描述】:

我的 TypeScript 项目是为带有 AMD 模块的浏览器编译的。我包括lodash.min.js 我自己,以及一堆其他所有声明全局变量的UMD 库,例如moment 和_。我需要告诉我的 TypeScript Lodash 的全局 _ 变量。我怎么能用进口做到这一点?如果我安装 @types/lodash 并使用 import * as _ from "lodash";,它会尝试在运行时动态获取 AMD Lodash 模块,这会破坏一切。

如果我有一个文件声明_ 全局,即export declare const _: LodashStatic;,我什至无法将我的声明导入另一个文件,或者它会尝试在运行时加载内容。如果 TypeScript 将其视为有效的导入,那么 declare 关键字的意义何在。我认为声明只是告诉编译器关闭,并且在运行时会有单独加载的东西。幸运的是,我可以在数百个文件中的每一个文件中使用 declare const _: LodashStatic; 并且一切正常,但如果我可以只声明一次然后导入其他文件就更好了...

【问题讨论】:

    标签: javascript typescript module umd


    【解决方案1】:

    告诉 Typescript 存在全局类型的常用方法是通过 tsconfig.json 中的 types 数组。如果您安装了@types/lodash,那么在您的tsconfig.json 中包含以下内容应该允许您在任何地方引用_:

    {
      "compilerOptions": {
        "types": ["lodash"]
      }
    }
    

    【讨论】:

    • 它没有。它给了我消息,告诉我不要在模块中使用 UMD 全局变量。
    猜你喜欢
    • 2015-07-25
    • 1970-01-01
    • 2019-09-29
    • 1970-01-01
    • 1970-01-01
    • 2016-02-10
    • 2019-01-04
    • 2015-03-07
    • 2016-10-20
    相关资源
    最近更新 更多