TypeScript #10 Общие типы (Generic)
HTML-код
- Опубликовано: 6 фев 2025
- #YauhenK #webDev #TypeScript
Всех приветствую в курсе «TypeScript».
В данном видеокурсе мы с вами рассмотрим возможности языка строгой типизации - TypeScript. Разберём его основные фишки и ключевые отличия от JavaScript. Изучим такие понятия, как перечисления (Enum), интерфейсы, пространства имён. Рассмотрим набор нативных утилит, которые предоставляет сам язык.
✒ Репозиторий курса:
✔ github.com/Yau...
✒ Полезные ссылки:
✔ TypeScript (документация): www.typescript...
✔ Sandbox (песочница): www.typescript...
✔ Typescript Utils (утилиты): www.typescript...
✒ Полный список готовых и планируемых курсов:
✔ Trello: trello.com/b/R...
✒ Автор курса:
✔ RUclips: / yauhenkavalchuk
✔ Instagram: / yauhenkavalchuk
✔ Twitter: / yauhenkavalchuk
✔ VK: YauhenK...
✔ LinkedIn: / yauhenkavalchuk
✔ GitHub: github.com/Yau...
✔ VK (Группа): webdevcom
✒ Поддержать развитие канала: github.com/Yau...
Чётко и без воды всё объяснил. Лайк
Спасибо
СПАСИБО!!!! Я уж думал, что никогда не разберусь, а тут 7 минут и готово!!!!
Всегда пожалуйста
уже несколько месяцев пользуюсь ТС но только теперь до конца понял - (Generic). Спасибо за хорошее объяснение!
Спасибо за отзыв
Наконец-то хоть кто-то обьяснил что такое дженерики нормально! Спасибо!!
пожалуйста
Привет, Евгений!
Однозначно лайк!
К сожалению, тема не раскрыта, простой пересказ документации.
Нет ни примеров реального использования, ни узких и сложных тем по типу typeof, keyof в дженериках, условного наследования и тп.
По сути мы получили "ну вот это можно использовать так: ", а зачем и почему ? зачем нужен K если можно явно указать тип number
Было бы уважительно, если бы автор ответил на этот комментарий.
дженерики нужны для снятия ограничения на использование типов. Из примера это очевидно - заменяем тип данных с конкретного на дженерик, и вуаля - вместо дженерика можно подставить любой тип. Если же нужно ограничить дженерик конкретным типом - числом или строкой.. или чем то еще, то дженерик экстендит тот тип данных, которым он должен быть
@@макскупр-ш4у а почему просто тип any не указать тогда?
Где тут два лайка поставить) Уже пару раз пересмотрел))
👍
Благодарю за объяснение))
Всегда пожалуйста
супер контент, роботаю React Native Developerom, только месяц, как раз начинаем писать на TS проект, курс очень помогает , а то пишеш что-то и сидиш вроде зделаеш а до конца как роботает непонимаеш))))
👍
Парень, извини, но что у тебя с мягкими знаками в окончаниях глаголов? Я хоть и технарь, но, читаю и кровь из глаз идёт ))
@@UnrealTabby ahaha, 8class, toje idet krov:;)
Почему это объяснено лучше чем в яндекс практикум даже спустя 4 года?..
Понятия не имею)
Вопрос, а почему не использовать в последнем случае просто намбер вместо K extends number ?
Тоже такой вопрос возник. Наверное просто пример неудачный
Можно реализовать функцию которая будет возводить в степень как один примитив так и массив с ними
То есть например класс который сможет производить операции как над единичным обьектом так и над массивом таких объектов, это может быть нужно и удобно
@@anton_soldatov Можно пример (скажем, в песочнице)?
потому что K это как переменная которую ты можешь подставлять, и этот вопрос отпадет если попробуешь заменить K на number
Оо я ждал этого урока! Спасибо!
Моё почтение!
Благодарю
6:53 не очень понял, зачем делать дженерик наследуемый от number, если нам нужен только тип number.
Проще сразу написать в конструкторе public name: T, public age: number, ведь K всё равно не может быть ни чем, кроме number
Это было нужно в качестве примера
@@YauhenKavalchuk нужны примеры из реальной практики, а не пример ради примера, где нет логики.
@@YauhenKavalchuk вы говорите как это делать, а зачем это делать люди не поймут, и будут писать лишние дженерики
В плюсах эти дженерики называют шаблонами, классная вещь.
Евгений, спасибо за курс, но вынужден согласиться с другими комментаторами - объяснение так себе. Пришлось переключиться и поискать более конкретное и внятное объяснение. Если с английским не совсем туго, то рекомендую ruclips.net/video/nViEqpgwxHE/видео.html
Я не часто использовал generic типы, поэтому рассказал, как сам понял. Соглашусь, что можно было подробнее, но уж как есть
Спасибо большое!
Пожалуйста 👍
Спасибо! Есть вопросы: 1. В песочнице TS не работает синтаксис ES6? Ошибка при создании generic типа в виде стрелочной функции. 2. Зачем дженерик типу давать строгую типизацию для аргумента (K extends number), когда можно использовать строгую типизацию без дженерик типа в данном случае?
1. Должно работать, возможно не включена какая-то настройка
2. Это было чисто для примера
@@YauhenKavalchuk Понял. Спасибо.
@@taran_dm const getter = (data:T):T=>data
Спасибо, очень толковое объяснение, теперь много стало понятнее.
Пожалуйста)
👍
👍
Зачем нам использовать способ K extends number, если мы просто в конструкторе можем потом указать public age: number вообще не использую тип К, если он будет только числом
Это было чисто для примера
Спасибо
пожалуйста
почему в последнем примере вместо K extends number нельзя написать просто number?
Это нужно чисто для примера
А зачем писать "K extends number" если это то же самое что и просто number? Или есть разница какая-то?
Всё верно. Это было чисто для примера
отлично спасибо ! А вы могли бы записать курс по алгоритмам например ?
В планах есть, но когда приступлю к записи пока не знаю
@@YauhenKavalchuk спасибо за ваш труд !
Эх, вопрос у меня только один. Зачем было придумывать TypeScript с типизацией переменных, а потом искать, как эти правила обойти: any, generics...
TypeScript придуман для экономии времени разработчика, подробных сообщениях об ошибках, контролем над приложением и тд.
А это не "обход правил", а очень практичная гибкость данного инструмента, раньше тоже считал что такая себе тема этот ts, но после набитых шишек понимаю что годнота)
Ребята, я не понял, а в чем разница между дженерик типом и типом any?
Я так же могу указать в аргументах any и аргументы будут принимать любой тип
any - это любой тип (по сути данный вариант просто убирает весь смысл типизации). Generic - это гибкий, конфигурируемый вариант типа
Четко и по делу. Спасибо!
Пожалуйста
generic можно задавать только классам и функциям? например для массива или объекта у меня не получилось:
const arr: = []
const obj: = {}
Там другой синтаксис, Array. В предыдущих уроках можно найти эту информацию
Можно ли смешивать generic с интерфейсом/типом? Если да, то можно маленький пример?)
Если честно, не сталкивался с таким, не могу ничего сказать
Не стал бы говорить о том, что стрелочные функции (arrow function expression) - это ES6 синтаксис, а обычные функции(function declaration statement) ES5. Они как бы не одно и тоже - во-первых, в стандарте ES6 присутствует и function (function declaration statement). Посему можно просто говорить о стрелочных функциях (arrow function expression) и function declaration statement + для полноты можно было добавить function definition expression. Если ничего не перепутал.
большинство людей не знает всех именований объявлений функций )
душнила
Вот вроде понятно все в уроках, работаю с ТС уже 4 месяца, а до сих пор тимлида пингую, трудно правильно дженерики писать.. Видимо нужны годы опыта, хз.
Согласен
Golang: не понял
+
👍
Абышто
🤔🤷♂️
nic nie rozumiju
🤷♂️
Автор просит оставить комментарий если что то не понятно, но на вопросы комментаторов не отвечает...
Не всегда есть на это время
странно что так вскользь рассказали про type они же тоже могут экстендить друг друга, для них можна юзать условие или |, в отличии от интерфейса имена должны быть уникальными, в интерфейсе это не обязательно они тогда смерджаться.
Кратко и ясно, спасибо! Лайк
Пожалуйста)