typescript använder nycklar som begränsning för strängar


Jag har följande gränssnitt:

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

Jag vill ha en funktion som accepterar en nyckelparameter som måste vara en av tre strängar:

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

Kan jag på något sätt generera typen för nyckelparametern från gränssnittet?

Svar #1

Typescript har keyof-typoperatorn för just detta specifika fall:

function useKey(key: keyof Address ) {
}

Detta kommer att ge dig alla offentliga nycklar av en typ i en union.

Du kan använda typförfrågningar för att till och med få typen av fältet:

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

Svar #2

Du kan använda keyof-operatorn:

type AddressKey = keyof Address

Relaterade artiklar