我有一个使用d3库的应用程序.在打字稿代码中,为了成功使用d3(即,没有编译器错误TS2686,d3指的是UMD全局,但当前文件是模块),我必须包括这一行:
import * as d3 from 'd3';
问题是它发出:
require('d3');
in JavaScript.这不是d3库在我们的应用程序中的位置.它位于Web应用程序的根目录下,位于名为"d3"的目录中.此外,我根本不需要JavaScript,因为我们的index.html将其作为全局加载.很难搞清楚如何获取TypeScript源以允许我在没有导入的情况下引用d3.
Aar*_*all 10
目前,UMD typedef不能从模块文件中作为全局命名空间引用.(它只允许您从非模块文件引用全局命名空间.)解决方法是在项目中手动声明全局命名空间:
// global.d.ts
import * as _d3 from "d3";
declare global {
const d3: typeof _d3;
}
Run Code Online (Sandbox Code Playgroud)
现在您可以--allowUmdGlobalAccess从模块中引用而无需从中导入d3,您仍然应该import基于对象获取所有正确的类型检查require.
| 归档时间: |
|
| 查看次数: |
6665 次 |
| 最近记录: |