当使用与目标类型分离的接口时,泛型函数返回<unknown>类型

时间:2019-08-08 01:51:32

标签: typescript

我正在尝试在React中创建一个钩子,该钩子可观察到rxjs的返回值,但对rxjs库没有硬性依赖。

因此,我创建了一个通用接口,该接口描述了将与之交互的可观察对象的API的一部分。

export interface GenericSubscribable<T> {
  subscribe: any
}

export const useObserverable = <T>(
  s: GenericSubscribable<T>
): T => { 
  // the points don't matter
  return {} as any
};

但是食用时

import { interval } from 'rxjs'

const counter = interval(1000) // Observable<number>
const shouldBeNumber = useObserverable(counter)

shouldBeNumber<unknown>而不是<number>的形式出现。 为什么会这样?

Example of type inference working in a similar scenario

1 个答案:

答案 0 :(得分:0)

感谢@seeper的见解。我看错了价值 以下示例有效

export interface GenericSubscribable<T> {
  subscribe: (cb: ((value: T) => any)) => any
}

export const useObserverable = <T>(
  s: GenericSubscribable<T>
): T => { 

  return {} as any
};