12 typescript tslint
打字稿版本2.2.2
我在UserRoutzr.ts中写了这个要求
const users = <IUser[]> require(path.join(process.cwd() + "/data"));
Run Code Online (Sandbox Code Playgroud)
TSLint提出以下警告:
require statement not part of an import statement
Run Code Online (Sandbox Code Playgroud)
如果我改为:
import users = <IUser[]> require(path.join(process.cwd() + "/data"));
Run Code Online (Sandbox Code Playgroud)
然后它引发了一个错误:
TS1003 Identifier expected
Run Code Online (Sandbox Code Playgroud)
我该如何重写这个要求?谢谢你的反馈
Pal*_*leo 16
TypeScript模块是ES6模块的一种实现.ES6模块是静态的.你的问题来自动态路径:path.join(process.cwd() + "/data").编译器无法确定编译时它是哪个模块.
您应该使用模块的静态路径.在编译时,TypeScript解析它.它会影响正确的导出类型(any)IUser[].
import users = require("./yourModuleThatExportsUsers");
Run Code Online (Sandbox Code Playgroud)
注意:如果您的模块users只包含数据,您可以考虑将其更改为JSON文件,该文件可以加载(Node.js)或捆绑(Webpack).
小智 5
如果您可以正确运行代码但 eslint 报告错误,您可以/*\xc2\xa0eslint-disable\xc2\xa0*/在错误代码上方添加\n这样
\n/*\xc2\xa0eslint-disable\xc2\xa0*/\nconst path = require("path");\nmodule.exports = {\n lintOnSave: false,\n chainWebpack: config => {\n\n const dir = path.resolve(__dirname, "src/assets/icons");\n\n config.module\n .rule("svg-sprite")\n .test(/\\.svg$/)\n .include.add(dir).end() // \xe5\x8c\x85\xe5\x90\xab icons \xe7\x9b\xae\xe5\xbd\x95\n .use("svg-sprite-loader").loader("svg-sprite-loader").options({extract: false}).end();\n /*\xc2\xa0eslint-disable\xc2\xa0*/\n config.plugin("svg-sprite").use(require("svg-sprite-loader/plugin"), [{plainSprite: true}] || []);\n config.module.rule("svg").exclude.add(dir); // \xe5\x85\xb6\xe4\xbb\x96 svg loader \xe6\x8e\x92\xe9\x99\xa4 icons \xe7\x9b\xae\xe5\xbd\x95\n }\n};\n\nRun Code Online (Sandbox Code Playgroud)\n
| 归档时间: |
|
| 查看次数: |
18815 次 |
| 最近记录: |