为何TypeScript无法直接用字符串字面量类型组合对象类型?
TypeScript 对象键类型写法报错原因及解决方法
你的代码报错核心原因是TypeScript不支持直接用类型别名作为对象键的索引签名。你当前写的[k]会被编译器识别成一个名为k的普通字符串键,而非引用类型别名k对应的"name"字面量类型。
要实现“用字面量类型作为对象键”的需求,必须使用TypeScript的映射类型语法,通过in关键字来遍历目标类型的成员:
type k = "name"; type v = string; // 正确写法:使用映射类型绑定类型别名 type obj = { [Key in k]: v };
这里的Key是遍历k类型时的临时变量(可以自定义命名),它会自动关联到k对应的"name"字面量,最终生成的obj类型等价于{ name: string }。如果你的k是包含多个成员的联合类型(比如type k = "name" | "age"),这种写法同样适用,会自动生成包含所有键的对象类型。
内容的提问来源于stack exchange,提问作者Autumn
相关产品推荐
相关产品推荐

