Интересно, можно ли как-нибудь уточнить непересекающееся объединение, основываясь на том, существует ли свойство, как-то так:
type Success = {| success: string |};
type Failed = {| error: string |};
type Response = Success | Failed;
function handleResponse(response: Response) {
if (response.hasOwnProperty('success')) {
// It is a Success
var value: string = response.success;
} else {
// It is an Error
var message: string = response.error;
}
}
Этот код дает мне следующие ошибки:
11: var value: string = response.success;
^ Cannot get `response.success` because property `success` is missing in `Failed` [1].
References:
8: function handleResponse(response: Response) {
^ [1]
14: var message: string = response.error;
^ Cannot get `response.error` because property `error` is missing in `Success` [1].
References:
8: function handleResponse(response: Response) {
^ [1]
Я хочу быть уверен, что если первый оператор if верен, то ответом является Sucess, в противном случае это ошибка без изменения типов Success или Failed.
Попробуйте ссылку