toRef 的第二个参数的类型是 never?
(alias) toRef<{}, never>(object: {}, key: never): never (+2 overloads)
在编写代码时候发现 toRef
无法传入第二个参数,因为 key
类型被指定成了 never
。我在vue
官网上没发现有这个定义。。不太确定哪里出现了问题。
回复
1个回答

test
2024-06-26
你这行签名是从 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
了
回复

适合作为回答的
- 经过验证的有效解决办法
- 自己的经验指引,对解决问题有帮助
- 遵循 Markdown 语法排版,代码语义正确
不该作为回答的
- 询问内容细节或回复楼层
- 与题目无关的内容
- “赞”“顶”“同问”“看手册”“解决了没”等毫无意义的内容