Typescript推断类型而不使用显式类型变量进行回调

Typescript推断类型而不使用显式类型变量进行回调,typescript,types,Typescript,Types,我想用我的函数包装rxjs subscribe的next回调: type Handler<T> = (value: T) => void; export function withTryCatch<T>(callback?: Handler<T>): Handler<T> { return (value: T) => { try { callback?.(value); } catch(err) {

我想用我的函数包装rxjs subscribe的
next
回调:

type Handler<T> = (value: T) => void;

export function withTryCatch<T>(callback?: Handler<T>): Handler<T> {

  return (value: T) => {
    try {
      callback?.(value);
    } catch(err) {
      // error handling
    }
  };
}

有没有办法避免使用
with trycatch

这个问题与您使用with trycatch函数的地方分开,在这种情况下,它是rxjssubscribe方法。当您仅调用它时,genericTtype参数是未知的。当您使用某种类型参数调用它时,T当然是已知的。您可以通过键入user参数来使用Typescript推断,如下所示:

withTryCatch((用户:UserModel)=>{
});

您需要将回调直接传递给subscribe以使用Typescript推断。不幸的是,使用这种包装函数是不可能的,这个问题与使用trycatch函数的地方是分开的,在这种情况下,它是rxjssubscribe方法。当您仅调用它时,genericTtype参数是未知的。当您使用某种类型参数调用它时,T当然是已知的。您可以通过键入user参数来使用Typescript推断,如下所示:

withTryCatch((用户:UserModel)=>{
});
您需要将回调直接传递给subscribe以使用Typescript推断。不幸的是,使用这种包装函数是不可能的

 store$
    .pipe(
      map(userSelector)
    )
    // .subscribe(withTryCatch<UserModel>((user) => {
    .subscribe(withTryCatch((user) => {
      // possible error code
    }));