打字稿:使用箭头功能时无法对通用类型进行推断

时间:2019-09-30 15:51:11

标签: typescript types rxjs ngrx

我希望在下面的设置下,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([])},
});

我不清楚为什么在不这样做的情况下第一个应该失败的类型检查。

0 个答案:

没有答案