Специализация
Python Backend Developer
Java Backend Developer
Node.js Backend Developer
Golang Backend Developer
React Frontend Developer
Выберите навыки
React
JavaScript
Git
Redux
Webpack
Сложность
1-3
4-6
7-8
9-10
Рейтинг вопросов
1
2
3
4
5
Подпишись на React Developer в телеграм
Что такое generics в TypeScript?
Generics позволяют создавать компоненты, которые работают с разными типами данных. Это полезно для создания более универсальных и гибких функций или классов.
Что такое обобщения (generics) в Rust?
Обобщения дают возможность создавать код, который работает с любым типом, указанным при его вызове. При этом можно задавать ограничения (трейты), которые тип должен соблюдать. Это делает код более гибким и повторно используемым.
Какие есть средства обобщённого программирования (generics) в Go?
Начиная с Go 1.18, в языке появились type parameters для функций и типов. Объявляют обобщённую функцию func Map[T any](… ) и обобщённый тип type List[T any] struct { … }. Для ограничения типов используют constraints из пакета golang.org/x/exp/constraints или собственные интерфейсы. Это позволяет писать один код для разных типов.
Есть ли generics в PHP?
В PHP нет встроенной поддержки generics (обобщенных типов) как в Java или C#. Однако есть несколько способов достичь похожего поведения. Можно использовать док-блоки с аннотациями для подсказок IDE, создавать конкретные классы-обертки для разных типов, или применять union types и mixed типы. В PHP 8.0 добавлены union types, которые частично решают проблему множественных типов. Также существуют сторонние библиотеки, которые эмулируют поведение generics.
Как generics реализованы в Java на уровне байткода?
На уровне байткода generics реализованы через стирание типов и приведение типов. Компилятор добавляет cast там, где это необходимо. JVM не знает о generics и работает с обычными типами. Дополнительная информация о generics хранится только в metadata класса. Типовая безопасность обеспечивается на этапе компиляции.
Что такое wildcard (?) в generics?
В чём разница между extends и super в generics?
Как типизировать функцию, которая получает значение объекта по ключу?
Рейтинг:
4
Сложность:
6
Wildcard (?) в generics используется, когда точный тип параметра неизвестен или не важен. Он позволяет писать более гибкий и универсальный код, который работает с разными параметризованными типами. Чаще всего wildcard применяется при работе с коллекциями. С его помощью можно ограничить допустимые типы сверху или снизу. Это помогает избежать ошибок компиляции и лишних приведений типов.
Рейтинг:
5
Сложность:
7
extends используется, когда нужно читать данные из обобщённого типа.super используется, когда нужно записывать данные в обобщённый тип.extends ограничивает тип сверху, super — снизу.
Оба механизма помогают писать безопасный и универсальный код.
Главное правило — PECS: Producer Extends, Consumer Super.
Рейтинг:
5
Сложность:
6
Функцию типизируют с помощью generic-параметров и keyof. Ключ ограничивается ключами объекта, а тип возвращаемого значения зависит от переданного ключа. Это позволяет TypeScript точно вывести тип и предотвратить доступ к несуществующим свойствам. Такой подход делает код безопасным и самодокументируемым.
Рейтинг:
5
Сложность:
5
Рейтинг:
3
Сложность:
7
Рейтинг:
2
Сложность:
5
Рейтинг:
4
Сложность:
6
Рейтинг:
4
Сложность:
7