0 added
0 removed
Original
2026-01-01
Modified
2026-02-26
1
<p>В некоторых ситуациях, мы хотим ограничить входной параметр функции типом "любой объект". Например, для функции, которая проверяет наличие ключей в объекте. Существует несколько способов сделать такую проверку и не все из них работают так, как ожидается. Посмотрите на пример:</p>
1
<p>В некоторых ситуациях, мы хотим ограничить входной параметр функции типом "любой объект". Например, для функции, которая проверяет наличие ключей в объекте. Существует несколько способов сделать такую проверку и не все из них работают так, как ожидается. Посмотрите на пример:</p>
2
<p>Пустой объектный тип {} подразумевает под собой объект любой структуры и ограничивает множество всех значений, за исключением null и undefined. Пустой интерфейс работает так же как и пустой объектный тип. Это вряд ли то, что мы ожидали.</p>
2
<p>Пустой объектный тип {} подразумевает под собой объект любой структуры и ограничивает множество всех значений, за исключением null и undefined. Пустой интерфейс работает так же как и пустой объектный тип. Это вряд ли то, что мы ожидали.</p>
3
<p>Тип Object - это тип объекта. Он работает почти так же, как тип {}. Разница только в том, что Object предопределяет типы toString() и некоторых других встроенных методов, а тип {} этого не делает. Чтобы разобраться, изучим такой пример:</p>
3
<p>Тип Object - это тип объекта. Он работает почти так же, как тип {}. Разница только в том, что Object предопределяет типы toString() и некоторых других встроенных методов, а тип {} этого не делает. Чтобы разобраться, изучим такой пример:</p>
4
<p>Второе определение bar не работает, потому что тип Object указывает, что метод toString() должен возвращать строку.</p>
4
<p>Второе определение bar не работает, потому что тип Object указывает, что метод toString() должен возвращать строку.</p>
5
<p>Если мы хотим работать с не примитивными значениями, то для этого существует еще один тип - object с маленькой буквы:</p>
5
<p>Если мы хотим работать с не примитивными значениями, то для этого существует еще один тип - object с маленькой буквы:</p>
6
<p>При использовании типа object попытка получить доступ к свойствам объекта приведет к ошибке. Для такой задачи используются уже другие механизмы.</p>
6
<p>При использовании типа object попытка получить доступ к свойствам объекта приведет к ошибке. Для такой задачи используются уже другие механизмы.</p>
7
<p>В последующих уроках мы изучим подходы, такие как использование типа Record и дженериков с keyof для работы с объектами любой структуры. А пока вы можете использовать встроенные методы JavaScript, такие как Object.entries() и Object.fromEntries(), чтобы манипулировать объектами с типом object.</p>
7
<p>В последующих уроках мы изучим подходы, такие как использование типа Record и дженериков с keyof для работы с объектами любой структуры. А пока вы можете использовать встроенные методы JavaScript, такие как Object.entries() и Object.fromEntries(), чтобы манипулировать объектами с типом object.</p>
8
<p>Пример динамического извлечения ключей из объекта с использованием этих методов:</p>
8
<p>Пример динамического извлечения ключей из объекта с использованием этих методов:</p>
9
<ol><li>Метод Object.entries(obj) преобразует объект в массив пар [ключ, значение].</li>
9
<ol><li>Метод Object.entries(obj) преобразует объект в массив пар [ключ, значение].</li>
10
<li>Далее с помощью метода filter() мы оставляем только те пары, ключи которых содержатся в массиве keys.</li>
10
<li>Далее с помощью метода filter() мы оставляем только те пары, ключи которых содержатся в массиве keys.</li>
11
<li>Наконец, Object.fromEntries(entries) собирает новый объект из отфильтрованных пар.</li>
11
<li>Наконец, Object.fromEntries(entries) собирает новый объект из отфильтрованных пар.</li>
12
</ol><p>Этот подход позволяет легко работать с объектами, фильтруя ключи на основе динамических данных, даже если используется тип object, не предоставляющий доступ к свойствам напрямую.</p>
12
</ol><p>Этот подход позволяет легко работать с объектами, фильтруя ключи на основе динамических данных, даже если используется тип object, не предоставляющий доступ к свойствам напрямую.</p>