![](/img/trans.png)
[英]Typescript: How To Use Generics Properly To Infer Return Type of Function Correctly?
[英]how to use infer to infer the return type of a void function?
我试图更好地理解在 typescript 中使用infer
关键字。
这会是正确使用推断的有效演示吗?
我只想推断以下function的返回类型,
const [name, setName] = useState<string>('');
const [age, setAge] = useState<number>();
type CallbackType<T> = T extends () => infer R ? R: never
function stateCallback<T>(name: string, age: number): CallbackType<T>{
setName(name)
setAge(age);
}
它应该返回一个 void 类型,因为我没有返回任何东西,这是使用infer
的正确方法吗?
不,这不是应该使用infer
的方式。 如果您希望 TypeScript推断function 的返回类型,只需不要指定返回类型。
function stateCallback(name: string, age: number) {
setName(name)
setAge(age);
}
// return type of stateCallback is inferred as void
infer
关键字可用于(除其他外)从类型中提取信息。 因此,如果您将 function 类型传递给CallbackType
,它将返回函数的返回类型。
type CallbackType<T> = T extends () => infer R ? R : never
type Result = CallbackType<() => string>
// -> string
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.