我希望在下面的设置下,data
的类型将被正确推断为可观察到的of
的内部类型,例如number
。
这里有一些特定于ngrx的类型,但问题似乎与它们无关。以下代码段类型检查失败,因为data
被视为unknown
编辑:reduced example with all types defined on playground =>
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([])},
});
我不清楚为什么在不这样做的情况下第一个应该失败的类型检查。