TypeScript泛型场景下抽离关联类型的问题求助
解决泛型类型抽离的未识别错误
核心问题是你定义的ExtractedType未声明泛型参数,导致TS无法识别K。只需将其改为泛型类型别名,让K作为类型参数传入即可解决:
1. 定义可复用的泛型类型
// 抽离带泛型约束的类型别名 type ExtractedType<K extends StorageTypeNames> = Extract<StorageType, { name: K }>['data'] | null;
2. 在StorageHelper中复用该类型
修改方法签名,直接用ExtractedType<K>替代原有复杂类型:
export class StorageHelper { static getData<K extends StorageTypeNames>(type: K): ExtractedType<K>; static getData(type: StorageTypeNames) { let data: string | null = null; data = localStorage.getItem(type); return data ? JSON.parse(data) : null; } }
3. 其他场景复用示例
在代码其他位置需要对应类型时,传入枚举成员即可:
// 获取InitInfo对应的返回类型 type InitInfoData = ExtractedType<StorageTypeNames.InitInfo>; // 类型为 boolean | null
内容的提问来源于stack exchange,提问作者Георгий Барсегян
相关产品推荐
相关产品推荐

