Typescript 对象的类型是什么:“{ [name: string]: string}”?

red*_*d77 0 typescript angular

我开始使用 Angular HttpHeaders 但无法理解其构造函数的参数之一,即[name: string]: string,这是文档中的构造函数:

constructor(headers?: string | { **[name: string]: string** | string[]; })
Run Code Online (Sandbox Code Playgroud)

谁能解释该对象的类型或它所指的是什么?

sko*_*ovy 5

这称为索引签名

因此,您共享的完整类型声明headers?: string | { [name: string]: string | string[]; }表示headers可以是两种类型中的一种:字符串或具有特定形状的对象。

例如:

  • 细绳"some value"
  • 对象(有string值):{ some: "value" }
  • 对象(有string[]值):{ some: ["value", "foo"] }

索引签名{ [name: string]: string | string[]; }明确表示name可以使用任何字符串键,并且它的值可以是字符串string或字符串数​​组 ( string[])。inname实际上[name: string]没有任何意义。