Почему TypeScript выдает ошибку: TS2339: свойство 'error' не существует для типа 'EventTarget' - PullRequest
0 голосов
/ 11 апреля 2020

Я пытаюсь написать приложение angular с IndexedDB для небольшого книжного магазина. Я установил для индекса 'isbn' значение unique , и теперь я пытаюсь спровоцировать ошибку, потому что я хочу сказать пользователю, что isbn должен быть уникальным, и показать сообщение об ошибке.

Я могу console.log (e) и получить следующий вывод:

Событие

   {isTrusted: true, type: "error", 
   target: IDBRequest, currentTarget: IDBRequest, eventPhase: 2, …}

isTrusted: true
type: "error"
target: IDBRequest
result: undefined

Ошибка: DOMException: Невозможно добавить ключ в индекс ' isbn ': хотя бы один ключ не удовлетворяет требованиям уникальности.

Проблема:

Я не могу написать console.log (e.target.error) потому что TypeScript говорит: TS2339: свойство 'error' не существует для типа 'EventTarget'

Почему?

#

Это метод:

addItem () {

const request = window.indexedDB.open(this.database.name);

request.onsuccess = event => {

  const item = {
    title: '',
    isbn: 1,
    descrition: '',
    rating:  1
  };

  const transaction = request.result.transaction(['books'], 'readwrite');
  const objectStore = transaction.objectStore('books');
  const objectStoreRequest = objectStore.add(item);

  objectStoreRequest.onerror = e => {
    console.log(e.target.error); // Here is the error TS2339: Property does not exist
  };
};

request.onerror = event => {
  console.log('Error adding item');
};

}

1 Ответ

2 голосов
/ 12 апреля 2020

Это ошибка в TypeScript, см. https://github.com/microsoft/TypeScript/issues/30669

Вы можете обойти ее, приведя к any или используя // @ts-ignore или что-то еще.

...