2016-10-04 7 views
0

私はTypescriptでExpressミドルウェアを書いています。これはスタンドアロンパッケージとしてnpmに公開されます。これは私が型の安全性に書き込むことができますように私は、エクスプレスタイプを使用して、私の関数を定義できるようにしたいと思います。しかし モジュール全体でTypescriptに入力するだけでどうやってインポートできますか?

function playWithRequest(req: express.Request, res: express.Response, next: express.NextFunction) { 
    req['key'] = 'stuff'; 
} 

module.exports = playWithRequest; 

、私はrequire('express')自体に必要がない、と私はその意志import文を避けたいですそのようなrequire()コールを生成します。どのようにして、表現自体をインポートせずに表現形式についてTypescriptに伝えることができますか?

エクスプレスタイピングはnpm install @types/expressによってインストールされているため、node_modules/@types/express/index.d.tsにぶら下がっています。

答えて

1

デフォルトでは、TypeScriptは、コンパイルされたファイルで使用されるJS専用のエクスポートを持たないimport to requireステートメントを翻訳しません。

@types/expressによってエクスポートされたタイプのみを使用すると、必要な呼び出しが生成されません。 (コンパイルの目的のために)あなたは、このようなモジュールを作る(唯一のタイピングのためexpressを必要としている)あなたが安全にあなたの依存関係(ないdevDependencies)に@types/expressを置くことができ、あなたのdevDependencies内expressモジュールを保つ

これを行うと、アプリケーションにモジュールをインストールするたびに適切に安全なタイプになりますが、expressはそこに存在しないと不平を言うことはありません。

関連する問題