打字稿版本2.2.2
我在UserRoutzr.ts中写了这个要求
const users = <IUser[]> require(path.join(process.cwd() + "/data"));
TSLint发出以下警告:
require statement not part of an import statement
如果我将其更改为:
import users = <IUser[]> require(path.join(process.cwd() + "/data"));
然后它引发了一个错误:
TS1003 Identifier expected
我应该如何重写此要求?感谢您的反馈
TypeScript模块是ES6模块的实现。ES6模块是静态的。您的问题来自动态路径:path.join(process.cwd() + "/data")
。编译器无法在编译时确定它是哪个模块,并且linter不喜欢导致的原因any
。
您应该使用模块的静态路径。在编译时,TypeScript会解决它。并且影响到正确的导出类型(IUser[]
)users
。
import users = require("./yourModuleThatExportsUsers");
注意:如果模块data
仅包含数据,则可以考虑将其更改为JSON文件,可以将其加载(Node.js)或捆绑(Webpack)。
UPDATE(从2019年5月开始)—还可以使用动态导入,TypeScript可以使用它接受静态和动态路径:
const users = await import("./yourModuleThatExportsUsers");
另请参阅:TypeScript 2.4发行说明
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句