我有一个带有两个参数的通用函数。第二个基于第一个参数的值。
该代码仅适用于一个 type变量,但是当我添加另一个变量时,无法调用该函数。
这很完美:
type Event<T> = T extends 'string' ? string : number;
type input = 'string' | 'number';
function test<U extends input>(module: U, event: Event<U>) {
//...
}
//No errors
test('number', 2);
// Generates error as expected
test('string', 2);
但是当需要另一个通用变量时,我们会出错:
type Event<T> = T extends 'string' ? string : number;
type input = 'string' | 'number';
function test<T, U extends input>(module: U, event: Event<U>) {
// The subject factory returns a new Rxjs Subject
return subjectFactory<T>(module + '-' + event);
}
// Works without any generic parameter
const s1 = test('number', 2);
// Expected 2 type arguments, but got 1
const s2 = test<MyType>('number', 2);
我需要在没有第二个通用参数的情况下调用该函数。怎么样?