Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么<;引用路径=“…”&引用/&燃气轮机;使用TypeScript导入dojox/gfx时是否需要?_Javascript_Typescript_Dojox.gfx - Fatal编程技术网

Javascript 为什么<;引用路径=“…”&引用/&燃气轮机;使用TypeScript导入dojox/gfx时是否需要?

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

我们有一个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 { 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"
}