2017-03-13 20 views
1

具体的な例として、Express.Response.localsのタイプをanyからアプリケーション固有のAppLocalsインターフェイスに変更しようとしています。私は@types/expressを使用しています。タイプの宣言をTypeScriptのDefinitelyTypedからどのように拡張するのですか

私が動作しているようですどれもいくつか試してみました:

declare namespace express { 
    export interface Response { 
     locals: AppLocals 
    } 
} 

はエラーを与える:Import declaration conflicts with local declaration of 'express'は、ファイルの先頭にimport * as express from 'express'から来ます。

私は構造を複製しようとした場合in the sourceが見つかりました:

declare global { 
    namespace Express { 
     export interface Response { 
      locals: AppLocals 
     } 
    } 
} 

その後ハンドラでexpress.Responseの地元プロパティは、まだタイプanyです。

私はちょうどそれの一体のため、これをしようとした場合:

declare namespace Express { 
    interface Response { 
     locals: AppLocals 
    } 
} 

活字体が'Express' is declared but never used

+4

既存のプロパティのタイプを変更することはできません。プロパティを追加することはできますが、すでに設定されているプロパティは変更できません。 –

答えて

0

これは私のために働くことを私に語った:私の場合は

declare module "express" { 
    interface Response { 
    locals: AppLocals 
    } 
} 

、のみ私がこれらの複数を持っていて、TSがlocalsのタイプをマージしてもらえれば、それはまだできていないので、他のルートの特定の地方AppLocalsから返信してください。

関連する問題