我有一个带有声明的文件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提供正确的路径?

我在这里很困惑。有人可以帮忙吗?

最佳答案

如果您是ArrayItem.ts的所有者,则不需要module.d.ts。只需直接引用该模块即可。

您收到运行时错误,但未收到编译器错误,因为您的运行时正在尝试为当前路径而不是从models / ArrayItem加载ArrayItem.js。您的module.d.ts文件没有意义,因为它只是打字稿模块中定义(而不是代码)的包装,您已经准备好直接引用该模块了。

因此,请勿使用///并使用require(“ models / ArrayItem”)进行导入。

10-01 18:10