2013-07-07 23 views
11

Dizin imza tanımlayıcısı ne yapar?Yazı tipinde, dizin imza kimliği nedir?

interface IIndex { 
    [something: string]: any; 
} 

Tekrar "bir şey" kullanan herkes nerede olur?

interface IIndex { 
    [string]: any; 
} 
+2

"Bir şey", yalnızca türünün yerine sözlüğü aramak için gerçek anahtarı belgeler. Ancak, varsayılan bir "anahtar" adı muhtemelen% 99 oranında çalışmalıdır ... Bazı durumlarda (örneğin, '' [styleName: string]: string''), özel bir adın daha fazla dokümantasyon sağlayabileceği durumlar vardır. –

cevap

7

Benim tahminim bu JavaScript tutarlılık ve yakınlık nedeniyle olduğunu olacaktır:

Veya başka bir deyişle

, neden sadece sözdizimi değildir. (hatta arayüzleri içinde) yöntemi argümanlar isim yaygındır Tıpkı

, TS yöntemleri, yapıcılar, işlevler ve Dizinleyicilere tüm argümanlar name: type veya name (name: any anlamında) formatında olmalıdır. (Hikayenin sürümünü basitleştirilmiş ama beni almaya eminim) isim ve tipleri daktilo farklı ad yaşamak beri forma string bir argüman belirsiz olacaktır

. TypeScript'in misyonunun JavaScript'e yakın kalmak olduğunu unutmayın, bu nedenle yukarıdakileri string türünde bir argüman olarak yorumlamak kabul edilemez olur ve gerçekten de string: any'a denktir. sadece tip string veya number olabilir, çünkü indeksleyiciler, bir özel durum olabilir ise

Bundan başka, bu durum her zaman böyle olmamıştır (TS 0.8 any izin verilir), bu nedenle başka bir neden 0.9 göç kolaylaştırmak için olabilir.

İlgili konular