У меня есть общая функция с двумя параметрами. Второй основан на значении первого параметра.
Код работает только с одной переменной типа, но когда я добавляю другую, не могу вызвать функцию.
Это работает отлично:
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);
Мне нужно вызвать функцию без второго общего параметра. Как?
Subject<T>
в локальный массив. Затем я должен передать типT
, чтобы определить тему внутри функции. - person rostamiani   schedule 01.07.2020T
, к каким другим типам он относится? - person jonrsharpe   schedule 01.07.2020string
, поэтому не совсем понятно, зачем нужен общий тип. - person jonrsharpe   schedule 01.07.2020