0
TSLint警告不要在TypeScript中使用var
关键字,所以我在导入模块时一直使用import
。但是,当我为本地模块执行此操作时,尝试使用该模块时会出现错误。在NodeJS中为模块使用导入导致类型错误
在文件routes/main.ts
我:
import express = require("express");
let router = express.Router();
router.get("/", (req, res, next) => { ... });
module.exports = router;
在app.ts
我:
/// <reference path="../../typings/main.d.ts" />
import express = require("express");
...
import routes = require("./routes/main");
let app = express();
app.use(routes); // The type error is here.
...
使用import routes
导致当我使用它与app.use(routes);
以下类型的错误:
app.ts(36,13): error TS2345: Argument of type 'typeof ".../source/server...'
is not assignable to parameter of type 'RegExp'.
要解决这个问题,我可以把它转换成一个特定类型:
app.use(<express.Router>routes);
但是有些地方类型铸造不够干净。我可以切换到使用var关键字,当我导入模块:
var routes = require("./routes/main");
let app = express();
app.use(routes); // No errors.
但是,有没有办法满足编译器和tslint?或者在使用CommonJS模块风格时,我不应该在tslint中使用"no-var-requires": true
设置?