Видеоуроки, интерактивный редактор и сохранение прогресса — бесплатно, сразу после входа.
ВойтиСоздать аккаунт — бесплатноЗакончили урок?
Войдите, чтобы отмечать прогресс
Теперь у трёх аргументов цепочка зависимостей: из obj выводится T, из key выводится K, а тип value вычисляется из них двоих. Для ключа "age" это number, и строка не проходит.
Внутри функции copy[key] имеет тип T[K], и value тоже T[K]. Типы совпадают, присваивание компилируется без приведения. Это хороший признак: если правильная сигнатура убирает необходимость в as, значит сигнатура описывает функцию честно.
Приятный побочный эффект: после того как ты набрал assign(user, "age",, редактор уже знает, что третий аргумент число, и покажет это в подсказке. С unknown подсказка была бы бесполезной.
Тот же приём используется в сеттерах форм и сторах:
Здесь T не нужен, потому что тип объекта известен заранее. Остаётся только K, и связь «ключ и тип значения» работает так же.