我试图 for each 枚举设置一个类型值,但我不太了解将单个枚举元素映射到类型/接口的语法.
更改某些参数的值需要特定的请求正文,而有些则不需要.ParameterOne和ParameterTwo需要,ParameterTwo不需要.
enum Parameter {
ParameterOne = 'ParameterOne',
ParameterTwo = 'ParameterTwo',
ParameterThree = 'ParameterThree',
}
interface UpdateParameterOneRequestBody {
name: string;
age: number;
}
interface UpdateParameterTwoRequestBody {
id: string;
timestamp: number;
price: number;
}
最终主体将始终包括以下界面,以及可选的上述特定主体.
export interface UpdateParameterRequestBody<T extends Parameter> {
parameter: T;
value: boolean;
}
因此,它可能会导致UpdateParameterTwoRequestBody & UpdateParameterRequestBody
等,但始终包含基础UpdateParameterRequestBody
.
我曾try 创建一个类型,然后使用它扩展基础,但似乎我总是需要包含所有参数,它才能工作,我不想这样做.
type ParameterToRequest = {
[Parameter.ParameterOne]: UpdateParameterOneRequestBody,
[Parameter.ParameterTwo]: UpdateParameterTwoRequestBody,
};
type ParameterToRequestBody<T extends Parameter> =
UpdateParameterRequestBody<T> & T extends Parameter
? ParameterToRequestBodyTypes[T]
: never;
TS2536:类型"T"不能用于索引类型"ParameterToRequestBodyTypes".