成功またはエラーAPI応答のいずれかの関数引数のタイプを説明するのが苦労しています。ここでは関数が成功応答オブジェクトまたはエラーレスポンスオブジェクトのいずれかを取ることができユニオンタイプを識別するエラーを取得する(「オブジェクトタイプにプロパティが見つかりません」)
(this addressでTryFlowで再現)問題の簡単な不可解な例である:
export type ErrorResponse = {
error: {
message: string,
}
}
export type SuccessResponse = {
token: {
id: string,
}
}
それは、応答の種類を決定する必要がありますそれはいずれかhandleSuccess
又はhandleError
機能に対する応答を渡す:
function onSubmit(response: SuccessResponse | ErrorResponse) {
if (response.error) {
handleError(response);
} else {
handleSuccess(response);
}
}
function handleError(response: ErrorResponse) {
console.log(response.error.message);
}
function handleSuccess(response: SuccessResponse) {
console.log(response.token.id);
}
問題は、フローは、エラーを与えている:
23: function handleError(response: ErrorResponse) {
^property `error`. Property not found in
17: handleError(response);
^object type
代わりにunion型(SuccessResponse | ErrorResponse
)の私は、交差点の種類(SuccessResponse & ErrorResponse
)とレスポンスオブジェクトを入力し、それが正しいことができない場合は、エラーが消える - 私はonSubmit
関数にそのオブジェクトを渡しておりませんすべて両方の型のプロパティがありますが、のいずれかの2種類ののいずれかの引数があります。
私が間違っていることを説明し、このタイプミスを修正する方法を教えてください。
うん、:それは、あなたがexact Object typesを作ることができないことフローを伝えるために
。ありがとうございました! – azangru
@azangruよろしくお願いします! – MichaelDeBoey