Поиск по сайту
Ctrl + K
Вопросы по TS

Как работает необязательная цепочка в TypeScript?

Необязательная цепочка (optional chaining) — это полезная функция в TypeScript и JavaScript, которая позволяет обращаться к вложенным свойствам объектов или элементам массивов без необходимости проверки их существования на каждом уровне. Это особенно удобно, когда вы не уверены, существуют ли вложенные объекты в структуре данных, и позволяет избежать ошибок исполнения, связанных с обращением к undefined или null.

Пример использования

Предположим, у нас есть объект пользователя:

interface User {
    name: string;
    contact?: {
        email?: string;
        phone?: string;
    };
}

const user: User = {
    name: "Иван",
    contact: {
        email: "ivan@example.com"
    }
};

В этом примере объект user может не содержать свойства contact или свойство email внутри него. Если мы хотим получить адрес электронной почты, мы могли бы использовать следующую конструкцию, чтобы избежать ошибок:

const email = user.contact && user.contact.email;
console.log(email); // Output: "ivan@example.com" или undefined

Использование необязательной цепочки

С помощью необязательной цепочки этот код можно упростить:

const email = user.contact?.email;
console.log(email); // Output: "ivan@example.com" или undefined

Здесь ?. означает, что если свойство contact существует и не равно null, то будет получено значение email. В противном случае будет возвращено undefined, что исключает возможность обращения к свойству email у undefined.

Более сложный пример

Допустим, у нас есть массив пользователей, и мы хотим получить адрес электронной почты каждого пользователя:

const users: User[] = [
    {name: "Иван", contact: {email: "ivan@example.com"}},
    {name: "Мария"}, // у Марии нет свойств contact
    {name: "Петр", contact: {email: "petr@example.com", phone: "1234567890"}}
];

users.forEach(user => {
    const email = user.contact?.email ?? "Email не доступен";
    console.log(`${user.name}: ${email}`);
});

В этом примере мы используем необязательную цепочку и оператор нулевого слияния (??), чтобы предоставить сообщение по умолчанию в случае, если адрес электронной почты недоступен. Результат будет следующим:

Иван: ivan@example.com
Мария: Email не доступен
Петр: petr@example.com

Заключение

Необязательная цепочка — это мощный инструмент в TypeScript, который упрощает работу с вложенными объектами и структурами данных. Она значительно повышает читаемость кода и помогает избежать множества проверок на undefined или null. Использование этой функции может помочь новичкам в разработке более устойчивого и чистого кода.

Содержание:
Редактировать