2016-10-25 60 views
5

Şimdi bu basit bir örnek var diyelim bir işlev bildiriminde arayüz özellikleri için tip emniyet ',' stepTwo ',' stepThree ']?typescript:

Ben de enum ile bunu yapmaya çalıştım, ancak (

cevap

8

Ne aradığınız bu hafta uygulanmaktadır keyof operatör, bir ... bir indeks imza olarak enum kullanamazsınız ortaya çıktı Evet gerçekten). hazır olduğunda bu gibi görünecektir:

function markStepDone (step: keyof Steps) { 
    steps[step] = true; 
} 

farklı bir isim (keysof) ile erken PR buradadır: https://github.com/Microsoft/TypeScript/pull/10425 arada

, string kaba bir yaklaşım veya elle yazılmış türüdür "stepOne" | "stepTwo" | "stepThree" size keyof Steps

+1

'un kesin davranışını verecek! Teşekkür ederiz! 'Keyof' çıkana kadar böyle bir şey yaptık: 'türü AllSteps = 'stepOne' | 'stepTwo' | 'adım üç'; interface Adımlar { [index: string]: boolean; } işlev işaretiStepDone (adım: AllSteps) {' – Sergey