Распределение по union
Условный тип, применённый к объединению, ведёт себя особым образом: проверка выполняется для каждого члена объединения отдельно, а результаты снова собираются в объединение. Это называется распределением:
Онлайн-редактор кода, разбор решения и отметки о прогрессе доступны после входа.
ВойтиСоздать аккаунт — бесплатноУсловный тип, применённый к объединению, ведёт себя особым образом: проверка выполняется для каждого члена объединения отдельно, а результаты снова собираются в объединение. Это называется распределением:
type ToArray<T> = T extends unknown ? T[] : never;
type A = ToArray<string | number>; // string[] | number[]А если какой-то член превращается в never, он просто исчезает из результата: string | never это string.
В задании тип, который должен убирать null и undefined:
Ошибка: «'value' is possibly 'null'». NonNullableOf пока ничего не делает и возвращает тип как есть, поэтому value может быть null, и вызвать на нём метод нельзя.
Нужно, чтобы тип прошёлся по каждому члену объединения и выбросил те, что являются null или undefined, а остальные оставил без изменений. Условный тип из задания 21 и распределение делают ровно это.
Перепиши NonNullableOf через условный тип так, чтобы из объединения исчезали null и undefined, а остальные члены сохранялись. Для string | number | null должно получиться string | number. Функцию shout менять не нужно.