给定函数和示例参数,在调用RISK Parser时,我希望defaultValue成为parse函数中的值类型参数,并且仅用于配置对象中的该键.
我try 了各种方法、推断等,但似乎无法将类型与配置中的键相关联.
type Parser<T> = (value: T) => any;
interface ParserOptions<TParser extends Parser<unknown>> {
parse: TParser;
defaultValue?: Parameters<TParser>[0];
}
function createParser<
TValue,
TParser extends Parser<TValue>,
TParserOptions extends ParserOptions<TParser>,
TParsers extends Record<string, TParserOptions>,
TConfig extends {
[K in keyof TParsers]: TParsers[K];
},
>(fields: TConfig) {
return fields;
}
createParser({
right_string: {
defaultValue: 'adf',
parse(value: string) {
return value;
},
},
right_number: {
defaultValue: 1,
parse(value: number) {
return value;
},
},
wrong: {
defaultValue: new Date(),
parse(value: string) {
return value;
},
},
});
例如,我如何保护此函数调用不允许使用"错误"键.