У меня есть метод доступа к данным, в котором я использую карту для того, чтобы преобразовать хэш в массив, так что я могу перебрать их, на мой взгляд:Указание типа возвращаемого значения в методе angular2 машинопись
public getCrawlsStatuses():Observable<ICrawlsStatus[]> {
let _statusesURL:string = `${this.API_URL}/crawl_statuses`;
return this._http.get(_statusesURL)
.map((res:Response) => {
let statuses:ICrawlsStatus[] = [];
Object.keys(res.json()).map(key => {
statuses.push({
name: key,
total: res.json()[key]
})
});
return statuses;
})
.catch(CrawlsService.onError);
}
Однако я найти переменные статусы немного излишнего, поэтому решил сократить отображение, просто используя возврат методы отображения наблюдаемой-х:
public getCrawlsStatuses():Observable<ICrawlsStatus[]> {
let _statusesURL:string = `${this.API_URL}/crawl_statuses`;
return this._http.get(_statusesURL)
.map((res:Response) => {
return Object.keys(res.json()).map(key => {
return {
name: key,
total: res.json()[key]
}
});
})
.catch(CrawlsService.onError);
}
Это с точкой зрения проверки типа работает нормально для компонентов вне здесь, так как они должны ожидайте crawlsStatuses: ICrawlsStatus[];
, но для жизни меня Я не могу найти способ сделать возвращаемый объект, чтобы иметь тип внутренне, что-то вроде:
return <ICrawlsStatus>{
name: key,
total: res.json()[key]
}
Я хотел бы получить сообщение об ошибке, если возвращаемые ключи не совпадают мой интерфейс. например имена, полностью ....
Это интересно, но в этом случае результат будет более или менее избыточной переменной, подобной моему методу массива. Я надеялся, что будет больше 1 лайнера, который вернет тип ICrawlsStatus. что это невозможно? – XGreen
Также относительно утверждения типа вы бы не пытались включить здесь тип, если бы вы это делали? – XGreen