Typescript:如何定义包含多个泛型的函数的返回值类型?
多泛型函数返回值类型定义方案
你现有代码中返回值标注:T,K属于语法错误,TypeScript中没有直接用逗号分隔多个类型作为返回值的写法,且你函数内实际返回的是模板拼接后的字符串,和你标注的T,K类型不匹配,你可以根据实际需求选择对应修正方案:
场景1:保持现有拼接字符串的逻辑
你函数内实际返回的是字符串类型,直接将返回值标注为string即可,修正后代码:
const getter = <T, K>(age: T, name: K): string => `${age} and ${name}`;
该场景下返回值类型可以被TypeScript自动推导,你也可以省略显式的返回值标注。
场景2:需要返回两个泛型对应的原始值
如果你本意是要返回两个泛型参数的对应值,而非拼接字符串,可以用元组或对象类型标注返回值:
- 元组形式返回
// 返回值为[T类型, K类型]结构的元组 const getter = <T, K>(age: T, name: K): [T, K] => [age, name];
- 对象形式返回
// 返回值为包含age、name属性,对应类型分别为T、K的对象 const getter = <T, K>(age: T, name: K): { age: T, name: K } => ({ age, name });
内容的提问来源于stack exchange,提问作者Andrew Kruglik
相关产品推荐
相关产品推荐

