我很難描述函數參數的類型,它可以是成功的,也可以是錯誤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
錯誤消失如果代替聯合類型(SuccessResponse | ErrorResponse
)I型響應對象作爲交叉點型(SuccessResponse & ErrorResponse
),但是這不可能是正確的 - 我不能穿入onSubmit
功能的對象,該對象具有全部兩種類型的屬性,但是可以是或者這兩種類型的論據。
你能解釋我在做什麼錯誤,並建議如何解決這種打字錯誤?
是的,這確實起作用。謝謝! – azangru
@azangru不客氣! – MichaelDeBoey