我有一个带声明的文件module.d.ts
declare module "ArrayItem" {import out = require("models/ArrayItem"); export = out;}
现在我有一个文件Array.ts,第一行是
/// <reference path="../module.d.ts" />
import array = require("ArrayItem").
但这不起作用。我收到了脚本错误。
如果我使用,
/// <reference path="../module.d.ts" />
import array = require("models/ArrayItem")
然后我没有得到任何错误。
这里的模块加载有什么问题?
如果我有module.d.ts,那么应该从require(“arrayitem”)加载arrayitem模块。
正确?或者我应该始终使用ArrayItem的正确路径吗?
我在这里很困惑。有人可以在这里帮忙吗?
答案 0 :(得分:1)
如果您是ArrayItem.ts的所有者,那么您不需要module.d.ts。只需直接引用该模块即可。
您收到运行时错误但不是编译器错误,因为您的运行时正在尝试为当前路径加载ArrayItem.js而不是从models / ArrayItem加载。你的module.d.ts文件中没有任何意义,因为它只是typescript模块中的定义(而不是代码)的包装,你已经通过直接引用模块来获取它。
所以,不要使用///并使用require导入(&#34; models / ArrayItem&#34;)。