{ [key: string]: any } 是 TypeScript 中的一種型別註解

炽橙子發表於2024-05-16

{ [key: string]: any } 是 TypeScript 中的一種型別註解,它描述了一個物件的型別。讓我來解釋一下這個型別註解,並舉一個例子來說明它的用法。

在 TypeScript 中,{ [key: string]: any } 表示一個物件,其中鍵是字串型別,而值可以是任意型別。

  • {} 表示這是一個物件型別。
  • [key: string] 表示物件的鍵是字串型別。
  • : any 表示物件的值可以是任意型別。

這種型別註解通常用於描述一個具有動態屬性的物件,其中鍵的名稱是字串,而值的型別不受限制。

下面是一個簡單的示例:

let myObject: { [key: string]: any } = {
  name: 'John',
  age: 25,
  isAdmin: true,
  address: {
    street: '123 Main St',
    city: 'Anytown'
  }
};

在這個例子中,myObject 是一個具有動態屬性的物件,它包含了字串型別的鍵和任意型別的值。這意味著你可以向這個物件新增任意型別的屬性,而不需要提前定義這些屬性的型別。

總之,{ [key: string]: any } 提供了一種靈活的方式來描述具有動態屬性的物件,其中鍵是字串型別,而值可以是任意型別。

[key: string] 是 TypeScript 中描述物件鍵的一種方式,它使用了索引簽名(Index Signature)。讓我解釋一下這個語法,並舉一個例子來說明它的用法。

在 TypeScript 中,[key: string] 表示物件的鍵是字串型別。這種語法允許你定義一個物件,其中鍵是動態的,並且可以是字串型別。

下面是一個簡單的示例:

interface StringKeyObject {
  [key: string]: number;
}

let myObject: StringKeyObject = {
  "one": 1,
  "two": 2,
  "three": 3
};

在這個示例中,StringKeyObject 是一個介面,它使用了索引簽名 [key: string]: number;。這表示 StringKeyObject 介面描述了一個物件,該物件的鍵是字串型別,而值是數字型別。然後,我們建立了一個名為 myObject 的物件,它符合 StringKeyObject 介面的定義,其中鍵是字串,而值是數字。

這種語法非常有用,因為它允許你定義具有動態屬性的物件,其中鍵的型別是已知的,而值的型別可以是任何你指定的型別。

總之,[key: string] 表示物件的鍵是字串型別,這種語法可以用於定義具有動態屬性的物件。

相關文章