Javascript 为什么<;引用路径=“…”&引用/&燃气轮机;使用TypeScript导入dojox/gfx时是否需要?
我们有一个TypeScript项目,需要使用Dojo的Javascript 为什么<;引用路径=“…”&引用/&燃气轮机;使用TypeScript导入dojox/gfx时是否需要?,javascript,typescript,dojox.gfx,Javascript,Typescript,Dojox.gfx,我们有一个TypeScript项目,需要使用Dojo的createSurface。但是,我们意外地需要包括,如下所示 /// <reference path="node_modules/@types/dojo/dojox.gfx.d.ts"/> import gfx1 = require("dojox/gfx"); import gfx2 from "dojox/gfx"; import * as gfx3 from "dojox/gfx"; import { createSurfa
createSurface
。但是,我们意外地需要包括
,如下所示
/// <reference path="node_modules/@types/dojo/dojox.gfx.d.ts"/>
import gfx1 = require("dojox/gfx");
import gfx2 from "dojox/gfx";
import * as gfx3 from "dojox/gfx";
import { createSurface } from "dojox/gfx";
const el = new HTMLElement();
gfx1.createSurface(el, 100, 100); // require
gfx2.createSurface(el, 100, 100); // from
gfx3.createSurface(el, 100, 100); // star
createSurface(el, 100, 100); // single method
我们的tsconfig.json是
{
"compilerOptions": {
"target": "es5",
"module": "commonjs",
"jsx": "react",
"strict": true,
"esModuleInterop": true
},
"exclude": ["dist", "node_modules"]
}
在没有
的情况下,我们如何导入Dojox模块
更新日期:2018年6月4日
在进一步检查dojo的类型定义后,我发现我可以在dojox中不使用像这样的
import * as dojox from "dojo/main.dojox";
dojox.gfx.createSurface(el, 100, 100);
// or
import { gfx } from "dojo/main.dojox";
gfx.createSurface(el, 100, 100);
这是因为@types/dojo/index.d.ts
导出以下模块
declare module "dojo/main.dojox" {
var exp: dojo.main.dojox
export=exp;
}
但是,index.d.ts
中的dojox接口将gfx定义为对象。Typescript然后警告
类型“dojox”上不存在属性“createSurface”
作为一个测试,我创建了一个新项目,其中只包含以下依赖项
"dependencies": {
"@types/dojo": "1.9.40",
"typescript": "2.9.1"
}
然后我将gfx:Object
更改为gfx:dojox.gfx代码>在索引.d.ts中
。这似乎解决了这个测试项目的所有问题
我试图对我的原始项目执行相同的操作,但TypeScript警告说
node_modules/@types/dojo/index.d.ts(26014,24):错误TS2694:命名空间“dojox”没有导出的成员“gfx”
我已经验证了node_modules/@types/dojo
的内容是相同的,并且两个项目使用相同的TypeScript版本。tsconfig.json文件也相同
为什么一个项目会看到导出的成员,而另一个项目不会看到
"dependencies": {
"@types/dojo": "1.9.40",
"typescript": "2.9.1"
}