如何用TypeScript实现共享逻辑下多类型兼容的函数参数
实现兼容多类型的通用计数函数
你可以通过TypeScript泛型抽象重复的类型逻辑,把两个结构一致的函数合并成一个通用函数,完美兼容TypeA、TypeB及其他任意类型:
// 通用泛型函数,T代表任意目标类型(TypeA/TypeB/TypeC) export const countItems = <T>(): (( value: [string, T[] | undefined], index: number, array: [string, T[] | undefined][] ) => [string, number | undefined]) => { return ([key, items]) => { // 保留你原来的计数逻辑,示例逻辑如下: return [key, items ? items.length : undefined]; }; }; // 基于通用函数生成原有的类型专属函数(可选,也可直接调用countItems<TypeA>()) export const countTypeAs = countItems<TypeA>; export const countTypeBs = countItems<TypeB>; // 扩展支持TypeC的示例 export const countTypeCs = countItems<TypeC>;
核心要点:
- 用
<T>声明泛型参数,让函数可以适配任意元素类型的数组 - 把原函数中硬编码的
TypeA/TypeB替换为泛型T,核心计数逻辑无需改动 - 既可以直接通过
countItems<目标类型>()的方式调用,也可以预先定义类型专属的变量,保持原有代码的调用习惯 - 计数逻辑只依赖数组的基础特性(存在性、长度),不绑定具体元素类型,天然支持扩展到TypeC等新类型
内容的提问来源于stack exchange,提问作者MaximumBoy
相关产品推荐
相关产品推荐

