HTML Diff
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>