2017-07-03 18 views
0

私は異なるように見えるサーバーレスポンスを入力するにはどうすればよいですか?

interface Response { 
    [id: string]: Data 
} 

または

interface Response { 
    error: string 
} 

のいずれかで対応できるサーバーを照会していますが、私は次のエラーを取得:これは、入力する必要がありますどのようにProperty 'error' of type 'string' is not assignable to string index type '{ /* Structure of Data */ }'.

を?

+0

名前CommonResponse' 'のような何かをし、あなたの他のインタフェースがそれを継承します:'インタフェースの応答CommonResponseを拡張'。 – Alisson

+0

エラーは、 'string'型が' Data'型と一致しないためです。レスポンスはすべてが 'Data'型であることを要求します。あなたは、型が 'Data | 'レスポンス'インターフェースに 'string'を挿入します。 – toskv

答えて

2

あなたはデータ応答とエラー応答のunionとしてサーバーの応答タイプを定義することができます:あなたの「エラー」インターフェース

interface DataResponse { 
    [id: string]: Data 
} 

interface ErrorResponse { 
    error: string 
} 

type ServerResponse = DataResponse | ErrorResponse; 
+0

私が正しく理解していれば、ユニオンタイプは多重継承のように振る舞います。面白い!!! – Alisson

+0

@アリソン、そうではありません。 'ServerResponse'として定義された変数は' DataResponse' **または** ErrorResponseです。 [Intersection type](https://www.typescriptlang.org/docs/handbook/advanced-types.html#intersection-types)は複数の継承に近いです。 –

+0

ああ、私の悪い、 'TypeScript'を学ぶ必要があります彼らは私が使用していない新しい概念を導入しました(私は主にC#とjavascriptで作業しました)。ご回答有難うございます。 – Alisson

関連する問題