Typescript: функция с n параметрами типа объединения T, почему вывод одного типа параметра не выводит все, когда вызывающие должны соответствовать типам? - PullRequest
0 голосов
/ 07 апреля 2020

С учетом подписи этой функции: function foo<T extends X | Y>(bar: T, baz: T) {}
Абоненты не могут смешивать X и Y. Компилятор обеспечивает, чтобы bar и baz были либо оба X, либо оба Y

Однако проверка типа на bar сужает его тип, но не это из baz. Доказательство: ts детская площадка

Может ли эта симметрия вне тела метода каким-либо образом быть продолжена в теле метода, так что проверка 1 типа сужает все параметры?

1 Ответ

2 голосов
/ 07 апреля 2020

Ваше предположение неверно; допустимый вызов для сравнения будет

compare<string | number>(10, "");

Таким образом, недопустимо сужать один параметр на основе типа другого

...