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