考虑此界面:
export interface Vehicle<E> {
[key: E]: {
title: string
}
}
以及这些枚举:
export enum EuropeanCars {
MAKE_A = 1
MAKE_B = 2
}
export enum AmericanCars {
MAKE_A = 3
MAKE_B = 4
}
我想构建对象并强迫它们具有枚举类型的键:
export const AmericanCarDetails: Vehicle<EuropeanCars> = {
...
}
当前,我在界面中遇到此错误:key:E --- An index signature parameter type must be either 'string' or 'number'.
您可以使用mapped type代替界面:
export type Vehicle<E extends PropertyKey> = {
[key in E]: {
title: string
}
}
export enum EuropeanCars {
MAKE_A = 1,
MAKE_B = 2
}
export enum AmericanCars {
MAKE_A = 3,
MAKE_B = 4
}
export const AmericanCarDetails: Vehicle<AmericanCars> = {
[AmericanCars.MAKE_A]: { title: 'foo' },
[AmericanCars.MAKE_B]: { title: 'foo' },
}