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

TypeScript中Generic<K extends string>及key in遍历用法咨询

TypeScript泛型相关问题解析

1. 泛型<K extends string>的含义

<K extends string>是TypeScript的泛型约束,它规定泛型参数K只能是string类型,或是string的子类型(比如具体的字符串字面量"a"、"b",或是多个字符串字面量组成的联合类型"a"|"b")。这种约束用来限制泛型的取值范围,避免传入不符合要求的类型,保障代码的类型安全性。

2. 泛型K被限制为string类型时,如何通过key in K遍历

这里用到了TypeScript的映射类型语法[key in K],它可以遍历泛型K中的每个成员,将其作为对象的键,同时为每个键指定对应的值类型。结合代码示例拆解如下:

代码示例

type NewMappedTypes<K extends string> = { [key in K]: boolean } 

function composeTypedMap<K extends string>(k: NewMappedTypes<K>) {
    return k;
}

const t = composeTypedMap({ 'a': true ,'b':false});
console.log(t)

具体解释

  • NewMappedTypes是一个映射类型:当K为字符串联合类型(比如传入对象后,TypeScript会自动推断K为"a"|"b"),[key in K]会遍历K中的每个字符串字面量,生成对应的对象键,且每个键的值类型固定为boolean。
  • 函数composeTypedMap接收符合NewMappedTypes<K>类型的参数并返回同类型对象。传入{'a': true, 'b': false}时,TypeScript会自动推导K为"a"|"b",因此变量t的类型就是{ a: boolean; b: boolean },完全匹配传入的结构。

内容的提问来源于stack exchange,提问作者Mantu Nigam

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 04:36:13