Konvertera sträng till Typescript enum-nyckel för att referera till enum
Jag har ett värde som returneras till mig från en tredjepart inom ett objekt som är av strängtyp som jag sedan behöver konvertera till nyckeln för en enum som jag har definierat för att referera till en enum. Här är min kod:
export enum PaymentMethod {
CASH = 'CASH',
DD = 'DIRECT_DEBIT',
UNKNOWN = 'UNKNOWN',
}
export function membershipsTransformer(
membership: Subscription,
): MembershipDto {
const {
PayementMethodId: paymentType = '',
} = membership;
const paymentMethod: PaymentMethod = Object.keys(PaymentMethod).includes(
paymentType,
)
? PaymentMethod[paymentType]
: PaymentMethod.UNKNOWN;
Som du kan se, kollar jag om nyckeln finns i enumen och om den gör det försöker jag sedan dynamiskt hämta värdet från enumen med det värdet för att returnera. Jag kan inte få detta att fungera bra med Typescript för tillfället eftersom jag får detta fel:
Element implicitly has an 'any' type because expression of type 'string' can't be used to index type 'typeof PaymentMethod'.
No index signature with a parameter of type 'string' was found on type 'typeof PaymentMethod'.
Jag har försökt att kasta värdet med hjälp av
PaymentMethod[paymentType as PaymentMethod]
och
PaymentMethod[paymentType as unknown as PaymentMethod]
Men ingen av dessa verkar fungera.
Kan någon ge några råd? Tack