我正在分析一個 Angular 代碼,我遇到了type一個我不明白property的Interface名為“Origin”的代碼,它是:
export interface Origin {
areaNum?: number;
open?: { [key: string]: any };
}
我的第一個問題是那是什么樣的物體?我認為objects有一key:value對或多 對,其中key是..,關鍵是:),并且value可以包含任何值。這個奇怪的type似乎是一個object但我沒有看到一個key:value,它只包含一個array? ?。在我看來,這似乎是array因為方括號,但是 ? 可以將陣列作為object?的鍵嗎?如何?。我試圖弄清楚open在創建使用 this 的物件時該屬性的外觀Interface。我不明白這是什么{ [key: string]: any };。你能幫我理解嗎?,因為我正在學習。如果可能的話,你能不能給我看一個虛擬的例子object,它使用這個open property和value上面奇怪的有效type?。謝謝!
uj5u.com熱心網友回復:
我的第一個問題是那是什么樣的物體?
它是一個具有兩個可選屬性的物件:
areaNum, 一個號碼open, 使用允許字串索引的索引簽名的物件:該物件可以具有任何字串名稱的屬性,并且這些屬性的值是any
這是一個代碼示例,請參閱注釋:
export interface Origin {
areaNum?: number;
open?: { [key: string]: any };
}
let a: Origin = {
areaNum: 42,
open: {}, // <== Valid, an index signature allows there to be no properties
};
if (a.open) {
// You can do this, because `a.open` has an index signature making
// any string is a valid property for it:
a.open["any string you want"] = 42;
// You *can't* do this, because `a` doesn't have an index signature,
// it only has `areaNum` and `open` properties:
a["any string you want"] = 42;
}
游樂場鏈接
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/343779.html
