Я запрашиваю API и пытаюсь получить определенный элемент из массива, который он возвращает.
Я запрашиваю API и получаю ответ JSON. Я отправляю ответ через вызов .map функции, которая сопоставляет каждый объект в ответе с T.
getOne(num: number): Observable<T> {
let t$ = this.http
.get(`${this.API_URL}?${this.getParams()}`)
.map(mapToTypeT)
.filter(x => Number.parseInt(x.rn) === num)
return t$;
}
Я хочу вызвать фильтр, чтобы найти один элемент со значением rn, соответствующим параметру num. Я знаю, что это неправильно, так как я получаю две ошибки:
Property 'rn' does not exist on type 'T[]'
Type 'T[]' is not assignable to type 'T'
Есть ли способ получить доступ к массиву T[ ], чтобы проверить свойства каждого элемента, а затем вернуть элемент, соответствующий заданному предикату? В настоящее время я работаю с массивом Observable из T, но я хочу вернуть Observable только из одного T.
Для справки, две другие функции:
function mapToTypeT(response:Response): T[]{
return response.json().map(t => toT(t))
}
function toT(r:any): T{
let t = <T>({
staId: r.staId,
stpId: r.stpId,
staNm: r.staNm,
stpDe: r.stpDe,
rn: r.rn,
});
return t;
}