2017-10-27 13 views
0

TypeScriptのJSON APIを使用しています。多くの場合、JSON APIの一部は、追加のフィールドを除いて同じです。私はそのプロパティのためだけに追加の名前付きインターフェイスを作成することを含まないショートカットを見つけようとしています。私は、多くの場合、以下のような何かをする必要があります:理想的には新しいインターフェイスを宣言せずにインターフェイスのプロパティを拡張する

interface ICar extends IVehicle { 
    headlights: { 
     beam_strength: number, 
     color: string, 
     bulb: string 
    } 
} 

:あなたはこのような何かを行うことができますが、その後、あなたがすでに宣言インタフェースを拡張することの利点を失う活字体で

interface ICar extends IVehicle { 
    headlights: IHeadlights 
} 

interface IHeadlights extends ILights { 
    beam_strength: number 
} 

私はこの2つを組み合わせて、このようなことができるようにしたいと考えています。

interface ICar extends IVehicle { 
    headlights: ILights { 
    beam_strength: number 
    } 
} 

またはこのような何か:

interface ICar extends IVehicle { 
    headlights extends ILights { 
    beam_strength: number 
    } 
} 

活字体でこのような何かをする方法はありますか?

答えて

2

は、既存のタイプである、あなたはそれに自身の名前を与えることなくILightsの新しいサブタイプを作成するためにintersection typesを使用することができます。

interface ICar extends IVehicle { 
    headlights: ILights & { 
    beam_strength: number 
    } 
} 

私は本当にしないでくださいを理解してくださいなぜあなたはそれに名前をつけたくないのですか?拡張されたインターフェースは、交差タイプよりもエディタで検査するほうが少し面白いので、他のすべては同等です。私はインターフェースを拡張したいと思っています。しかしそれはあなた次第です。

希望があれば、がんばろう!

+0

ありがとうございます!大規模なJSON APIをモデリングすると、命名が難しくなり、多くの混乱とコード行が追加されるようです。私たちはJSON API仕様http://jsonapi.org/を使用しています。通常、モデルは99%同一ですが、追加のプロパティが少し埋め込まれています。 extendsでは、1つのプロパティを追加するだけで、多数の名前付きインターフェイスを作成する必要があります。たぶん、違ったやり方があります。 – mattferderer

1

タイプ交差演算子&を使用できますか?これは、次のようになります。IVehicleILightsを想定すると、

interface ICar extends IVehicle { 
    headlights: ILights & { 
     beam_strength: number; 
    } 
} 
関連する問題