繁体   English   中英

如何使用 infer 来推断 void function 的返回类型?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM