TypeScript接口中[name: string]语法的名称及含义是什么?
语法正式名称
你提到的[name: string]: string语法在TypeScript中的正式名称是索引签名(Index Signature)。
具体含义
索引签名的作用是为结构不确定的对象定义键、值的类型约束,当你无法提前枚举一个对象的所有属性名,但可以确定属性键的类型和对应值的类型时就可以使用它:
- 方括号内的
name: string是占位声明:表示该对象的所有属性键的类型都是字符串,这里的name是自定义的占位标识符,替换为key、param等其他名称不会影响实际类型约束效果 - 后面的类型声明(比如你示例里的
string | undefined)表示所有属性对应的值的允许类型
你给出的APIGatewayProxyEventPathParameters接口,就是用来描述“所有键为字符串、值为字符串或undefined”的对象,通常用来承载API网关的动态路径参数——因为不同接口的路径参数名不固定,无法提前枚举所有属性,用索引签名可以完美适配这种场景。
补充疑问解答
- 实现该接口不需要特殊的数组或Map结构,普通的JavaScript原生对象就完全符合要求,因为原生对象本身就支持字符串键的读写操作。
- 完全支持
typeA["str1"] = "str2"这种赋值操作,只要赋值的值符合你定义的值类型约束即可。
代码使用示例
// 声明符合接口的对象 const pathParams: APIGatewayProxyEventPathParameters = {}; // 正常赋值,符合类型要求 pathParams["userId"] = "10086"; pathParams["orderId"] = "ord_abc123"; // 读取值的类型会被自动推断为 string | undefined const userId = pathParams["userId"];
内容的提问来源于stack exchange,提问作者Attilah
相关产品推荐
相关产品推荐

