песочнице?
Я неправильно сужение делаю, или что-то ещё не так?
Спасибо
Я бы через оверлоад написал
Пока не соображу в чём разница и как заставить это работать =) Про что-то такое речь? function concat<A extends string>(a1: A, a2: A): A function concat<A extends ReadonlyArray<unknown>>(a1: A, a2: A): A { if (typeof a1 === 'string' && typeof a2 === 'string') { return a1 + a2;; } return a1.concat(a2); };
function concat<A extends string>(a1: A, a2: A): A Так не пойдёт. Если вызвать функцию с литералами "foo" и "foo", вернётся не "foo", а "foofoo".
Я как раз так и хочу)
Я имел в виду, что для concat("foo", "foo") выведется тип "foo". А на деле вернётся "foofoo".
Обсуждают сегодня