Видеоуроки, интерактивный редактор и сохранение прогресса — бесплатно, сразу после входа.
ВойтиСоздать аккаунт — бесплатноЗакончили урок?
Войдите, чтобы отмечать прогресс
string[] читается как «массив, все элементы которого строки». Тест сравнивает Names именно с этим типом.
Это один и тот же тип, string[] просто сокращённая запись. Вторая форма удобнее, когда элемент сам сложный:
Скобки во втором варианте обязательны: без них string | number[] означает «строка или массив чисел», а это совсем другой тип.
Компилятор начинает знать тип элемента, и это работает по всей цепочке:
Последняя строка показывает вывод типов в действии: тип параметра колбэка выводится из типа массива, писать (name: string) не нужно.
Стоит помнить, что по умолчанию TypeScript считает list[10] значением типа string, хотя в рантайме там будет undefined. Строгую проверку включает отдельная опция компилятора noUncheckedIndexedAccess, по умолчанию она выключена.