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
