我怀疑我犯了一个错误,但我无法通过类型检查获得以下内容。我最终得到Property 'map' does not exist for type 'Restos'
。我根据TS教程设置了界面,所以感觉好像map
没有包含在默认值中(我在tsconfig中有"target": "es6"
)
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)
^^^
});
}
}
答案 0 :(得分:2)
编译器唯一知道Restos
的真实情况是,当你用number
对其进行索引时,你会得到一个Resto
。仅仅因为某些东西有数字索引签名并不意味着它是一个数组(例如,对象{0: 'hello', 1: 'world'}
可以用数字索引以生成字符串,但是你不能在其上调用.map
。
您可能想要写的是type Restos = Array<Resto>
而不是界面。