Как сделать исключения для списка?

В TypeScript можно обрабатывать исключения с помощью механизма try/catch/finally. Однако, TypeScript является надмножеством JavaScript, который не имеет встроенной поддержки исключений.

Вместо использования исключений, JavaScript и TypeScript обычно используют более гибкую модель обработки ошибок при помощи возврата специальных значений или обработки ошибок с помощью обратных вызовов (callback) или промисов (promises).

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

class ListException {
  constructor(public message: string) {}

  toString(): string {
    return this.message;
  }
}

function addItemToList(list: any[], item: any) {
  if (!item) {
    throw new ListException("Item is required.");
  } else {
    list.push(item);
  }
}

const myList = [1, 2, 3];

try {
  addItemToList(myList, null);
} catch (e) {
  if (e instanceof ListException) {
    console.log(e.message); // Output: "Item is required."
  }
}

В этом примере создается пользовательский класс ListException, который представляет ошибку добавления элемента в список. В функции addItemToList производится проверка на наличие элемента. Если элемент отсутствует, то генерируется исключение типа ListException. При вызове функции addItemToList в блоке try, исключение поймается в блоке catch и обработает ошибку.

Но важно отметить, что использование подобной модели обработки ошибок при помощи исключений в TypeScript не является распространенным и не рекомендуется. Часто лучше использовать другие подходы, такие как возврат специальных значений или использование обратных вызовов или промисов для обработки ошибок.