Почему TypeScript выставляет ошибку при доступе к ErrorCode на T.Error в угловом?Javascript

Форум по Javascript
Ответить
Anonymous
 Почему TypeScript выставляет ошибку при доступе к ErrorCode на T.Error в угловом?

Сообщение Anonymous »

Я использую Angular с @ngneat/Query и rxjs для обработки запросов API. В моем коде я бросаю объект, содержащий ошибку, , но TypeScript жалуется, что ErrorCode не существует на t.error .
У меня есть Следующая html: < /p>

Код: Выделить всё

error code: {{ todos.error.errorCode }}

< /code>
и в моем коде TypeScript: < /p>
this.todos.subscribe((t) => {
const errorCode = t.error?.errorCode; // TypeScript error here
});
ошибка:

Код: Выделить всё

NG9: Property 'errorCode' does not exist on type 'Error'.
< /code>
  пример кода < /strong> < /h4>
Вот полный воспроизводимый пример:

stackblitz < /p>
import { Component } from '@angular/core';
import { bootstrapApplication } from '@angular/platform-browser';
import { of, tap } from 'rxjs';
import { injectQuery } from '@ngneat/query';
import { CommonModule } from '@angular/common';

@Component({
selector: 'app-root',
imports: [CommonModule],
template: `

error code: {{ todos.error.errorCode }}

`,
})
export class App {
#query = injectQuery();

todos = this.#query({
queryKey: ['todos'],
queryFn: () =>
of({ data: { status: 500 } }).pipe(
tap((response) => {
if (response.data.status === 500) {
throw { errorCode: response.data.status };
}
})
),
}).result$;

ngOnInit() {
this.todos.subscribe((t) => {
const errorCode = t.error?.errorCode; // TypeScript error here
});
}
}

bootstrapApplication(App);
< /code>
  то, что я попробовал < /strong> < /h4>
[list]
[*] Я подтвердил, что ошибка действительно является объектом ({ errorCode: number }
) при брошении.
[/list]
Почему TypeScript обрабатывает T.Error как ошибка , и как я могу правильно его ввести, так что ErrorCode признан?


Подробнее здесь: https://stackoverflow.com/questions/794 ... -in-angula
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Javascript»