2016-05-08 18 views
0

TSLintはTypeScriptのvarキーワードを使用することを警告しているので、モジュールをインポートするときにimportを使用しています。しかし、ローカルモジュールでこれを行うと、モジュールを使用しようとするとエラーになります。NodeJSのモジュールにインポートを使用するとタイプエラーが発生する

私が持っている app.ts
import express = require("express"); 
let router = express.Router(); 
router.get("/", (req, res, next) => { ... }); 

module.exports = router; 

::私が持っているファイルroutes/main.ts

私はapp.use(routes);でそれを使用するときimport routesを使用して

/// <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. 
... 

は、次のタイプのエラーが発生します。

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の設定を使用しないでください。

答えて

1

varを使用しないでください。
module.exports = router;をroutes/main.tsのexport = router;に置き換えることができます。
あなたはapp.useの使い方を誤解しています。 app.use("/", routes)を使用してください。

関連する問題