Как установить типы потока для обратных вызовов в слушателях событий - PullRequest
1 голос
/ 24 сентября 2019

У меня есть приложение с прослушивателями событий и pubsub.

Каждое из событий будет иметь совершенно другой тип полезной нагрузки, и поток будет кричать на меня, если я не проверю, действительны ли входные данныетипы в обратных вызовах.

const handleAuctionEnd = (auctionData: {auctionResult: string}) => {
const {auctionResult} = auctionData;
if (!auctionResult) return;
//doSomethingCool
}
const handleRequestEnd = (requestData: {requestStatus: number}) => {
const {requestStatus} = requestData;
if (requestStatus === undefined) return
//doSomethingCooler
}
myLibrary.onEvent(EVENTS.AUCTION, handleAuctionEnd);
myLibrary.onEvent(EVENTS.REQUEST, handleRequestEnd);

Это было нормально для небольшого числа типов событий.Но с ростом числа ошибки типа потока становятся сложными и становятся неуправляемыми.

Есть ли способ правильно набирать типы потока в обратных вызовах прослушивателей событий?

1 Ответ

0 голосов
/ 26 сентября 2019

Я думаю, вы можете сделать что-то вроде этого, чтобы сделать код немного чище.Согласно документации Flow,

, если мы создадим тип объединения обоих типов объектов, Flow сможет узнать, какой объект мы используем, на основе свойства success.

type AuctionResult = { auctionResult: string};
type RequestStatus = { requestStatus: number};

type CallbackParam = AuctionResult | RequestStatus

Вы можете определить тип параметра как CallbackParam.Возможно, вам все равно придется определить несколько типов, но это немного более организовано, чем определение их в строке.

const handleAuctionEnd = (auctionData: Callback) => {...}

Ссылка https://flow.org/en/docs/types/unions/#toc-disjoint-unions

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...