Я ожидаю, что с учетом приведенной ниже настройки тип data
будет правильно выведен как внутренний тип наблюдаемой of
, например, number
.
. Существуют некоторые специфические типы ngrx. здесь, но кажется, что проблема не связана с ними. Следующий фрагмент не проходит проверку типа, потому что data
рассматривается как unknown
Редактировать: сокращенный пример со всеми типами, определенными на детской площадке =>
interface ActionResponderOpts<T, A extends ActionCreator> {
ofType: A;
apiStream: (actionType: ActionType<A>) => Observable<T>;
onSuccess: (data: T) => Observable<Action>;
}
function actionResponder<T, A extends ActionCreator>(op: ActionResponderOpts<T, A>): void {}
actionResponder({
ofType: SignIn,
apiStream: payload => of(payload.email.length),
onSuccess: data => { data.toString(); Math.round(data); return from([])},
});
Способ принудительно сделать правильный (но бесполезный) вывод типа с помощью фиктивной функции.
const ofOne = () => of(1)
actionResponder({
ofType: SignIn,
apiStream: ofOne,
onSuccess: data => { data.toString(); Math.round(data); return from([])},
});
Мне не ясно, почему первая не должна проверять тип, если этого не происходит.