O Typescript não conhece Array.map
Suspeito que cometi um erro, mas não consigo fazer o seguinte passar na verificação de tipos. Acabo recebendo Property 'map' does not exist for type 'Restos'. Configurei a interface de acordo com os tutoriais de TS, então parece que map não está incluído por padrão (tenho "target": "es6" no tsconfig)
interface Resto {
rname:String,
qname:String,
tel:String
}
interface Restos {
[index:number]:Resto;
}
class MainController {
headline: String;
rnames: [String];
constructor($http : ng.IHttpService) {
this.headline = "hello world";
$http.get('http://afbackend.herokuapp.com/api/restos')
.success( (res:Restos) => {
console.log(res);
this.rnames = res.map(r => r.rname)
^^^
});
}
}
Resposta #1
A única coisa que o compilador sabe ser verdadeira sobre Restos é que, quando você o indexa por um number, você obtém um Resto. Só porque algo tem uma assinatura de índice numérico não significa que seja um array (por exemplo, o objeto {0: 'hello', 1: 'world'} pode ser indexado por números para produzir strings, mas você não pode chamar .map nele).
O que você provavelmente quer escrever é type Restos=Array<Resto> em vez da interface.