字面

2017-05-28 23 views
0

從說明書中所得到的對象的類型:字面

當文字對象被上下文由一個類型,其包括字符串索引簽名,所得到的類型的對象文本的類型包括與聯合類型的字符串索引簽名文字類型的對象聲明的屬性,或者如果文字的對象爲空未定義類型

是什麼意思 - 所導致的對象字面的類型?

讓我們說我們有

var a:{[key:string]:any} = {a:1,b:"2"}; 

a已鍵入{[key:string]:any}

在哪裏得到的類型的對象在此聲明的文字?

是否有代碼中的任何地方我可以看到對象文字的行動類型?

+0

看起來它是關於該類型'this'在對象字面定義,如果有任何的方法。如果是這樣,它已經過時了,因爲[this在對象字面量方法中被推斷爲'any'](https://github.com/Microsoft/TypeScript/pull/8389)。該規範自1.8以來未見任何提交。 – artem

回答

1

在代碼中有什麼地方可以看到結果類型的對象文字在行動中嗎?

下面的代碼示例

declare const str: 'a' | 'b'; 
let foo = { a: 1, b: "2" }[str]; // typeof foo is string | number 
+0

其中是在右手錶達式中包含字符串索引簽名的類型? – Oleg

+0

順便說一下,從規範:如果索引是一個字符串文字或數字文字和對象具有明確的屬性(第3.11.1)與該文字給出的名稱(在數字文字的情況下轉換爲其字符串表示形式),屬性訪問是該屬性的類型。如果'str'是**字符串literal **,則'foo'具有不是'string | number'的明顯成員類型。但是'str'是union,spec不考慮這種情況。 – Oleg