【发布时间】:2021-07-29 22:43:48
【问题描述】:
如何使用在这样的类型上定义的重载函数:
function myFunction<T, U extends keyof T>(keys: U[]): Pick<T, U>
function myFunction<T, TSelected = unknown>(funcArg: (state: T) => TSelected): TSelected;
type HoneyState<T> = {
getValue: myFunction<T>
}
这样做会给我错误:
'myFunction' 指的是一个值,但在这里被用作一个类型。您的意思是“typeof myFunction”吗?
在类型上使用重载函数的正确方法是什么?将它们合二为一是行不通的,因为返回类型不同
【问题讨论】:
-
那里的错误信息似乎很清楚,当你做它说你应该做的事情时,它会做你想做的事情吗?
-
@AlexWayne 如何在不直接在类型上使用的情况下对上述类型使用函数?如果我直接在类型上执行,它不允许重载:)
-
typeof myFunction不是正确的解决方案 -
那个游乐场链接给你两个错误;首先是您的重载函数没有实现。如果这不是您要问的问题,您能否修复它以使此处的代码为minimal reproducible example?这个问题似乎也与重载无关,更多地与泛型函数和泛型类型之间的区别有关,如this question and its answer 所示。您不能轻易让编译器更改泛型类型参数的范围。
标签: typescript