TypeScript stringler için kısıtlama olarak anahtarları kullanır


Aşağıdaki arabirime sahibim:

interface Address {
   street: string
   town: string
   country: string
}

Bir işlevin üç dizeden biri olması gereken bir anahtar parametresini kabul etmesini istiyorum:

function useKey(key: "street" | "town" | "country") {
}

Anahtar parametre için türü arayüzden bir şekilde oluşturabilir miyim?

Cevap #1

Typescript'in bu tam spesifik durum için keyof tür operatörü vardır:

function useKey(key: keyof Address ) {
}

Bu, bir birleşimdeki bir türün tüm genel anahtarlarını size verecektir.

Alan türüne bile ulaşmak için tür sorgularını kullanabilirsiniz:

function getValue<K extends keyof Address>(key: K): Address[K]{
     //...
}

Cevap #2

keyof operatörünü kullanabilirsiniz:

type AddressKey = keyof Address

İlgili makaleler