toRef 的第二个参数的类型是 never?

    (alias) toRef<{}, never>(object: {}, key: never): never (+2 overloads)

在编写代码时候发现 toRef 无法传入第二个参数,因为 key 类型被指定成了 never
我在vue官网上没发现有这个定义。。不太确定哪里出现了问题。

阅读 443
1 个回答

你这行签名是从 vscode 悬浮框里复制的吧?

其实它是这样的:

export declare function toRef<T>(value: T): T extends () => infer R ? Readonly<Ref<R>> : T extends Ref ? T : Ref<UnwrapRef<T>>;
export declare function toRef<T extends object, K extends keyof T>(object: T, key: K): ToRef<T[K]>;
export declare function toRef<T extends object, K extends keyof T>(object: T, key: K, defaultValue: T[K]): ToRef<Exclude<T[K], undefined>>;

你应该是写了 toRef<{}, >,那么 T 现在是 {} 了,而 K 要满足 keyof T 的约束,{} 没有键,那自然就是 never

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Microsoft
子站问答
访问
宣传栏