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
設置?