You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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,提问作者Георгий Барсегян

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 02:22:36