2016-09-12 6 views
0

のインターフェイスを削減します2回構造化されています(マングーススキーマとタイスクリプトインタフェース)。これはDRYではなく、不便です。これが発生しやすい不便とエラーになりは、私はそのように宣言インターフェイスとマングースのモデルを持っている活字体

export interface ILeanUserDocument { 
    _id: mongoose.Types.ObjectId; 
    __v: number; 
    surname: string; 
    lastName: string; 
} 

:私はマングースのleanメソッドを使用したい場合は残念ながら、私はまだ別のインターフェイスを定義する必要があります。自分のIUserDocumentインターフェイスを拡張するための私のリーンインターフェイス(私はここで使用する動詞を知っていません)が、そこからものを削除する方法はありますか?

答えて

2

拡張機能は、インターフェイスにプロパティを追加する唯一の方法ではありません。私はあなたが探しているものを達成するためにtype intersectionで働くことができると信じています。下の例では、すべての名前は、適切と思われるものについての私の推測に過ぎず、好きなものを自由に選ぶことができます。

あなたはIUserProperties

interface ILeanUserBase { 
    _id: mongoose.Types.ObjectId; 
    __v: number; 
} 

export type ILeanUserDocument = ILeanUserBase & IUserProperties; 

変更は両方IUserModelIUserDocument

に反映されます、その後

export interface IUserProperties { 
    surname: string; 
    lastName: string; 
} 

export type IUserDocument = mongoose.Document & IUserProperties; 

以降にインタフェースを定義することができます

関連する問題