typescript - 使用与目标类型分离的接口(interface)时,泛型函数返回 <unknown> 类型

标签 typescript

我正在尝试在 React 中创建一个钩子(Hook),它从 rxjs observable 返回值,但没有对 rxjs 库的硬依赖。

因此我创建了一个通用接口(interface),它描述了我将与之交互的可观察对象 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

最佳答案

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

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

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

  return {} as any
};

关于typescript - 使用与目标类型分离的接口(interface)时,泛型函数返回 <unknown> 类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57404210/

相关文章:

javascript - 如何从使用 rjxs 从 API 获取值的服务返回映射字符串?

javascript - 错误 "Property ' innerText' 在类型 'EventTarget' 上不存在“?

typescript - 如何创建嵌套的 d.ts 文件?

typescript - 使用 HTTP Content-Type header 确定二进制数据与文本

reactjs - Firebase 功能部署构建失败,但预部署成功

angular - 在服务返回值之前从 Angular 自定义管道获取返回值

javascript - Angular 2 根据数字长度在数字之间放置空格

css - 未知规则 @tailwind css(unknownAtRules)

angular - 知道这是空的

typescript - 在 TypeScript 中,如何获取值为给定类型的对象类型的键?