Typescript不了解Array.map

时间:2015-08-10 18:10:13

标签: typescript

我怀疑我犯了一个错误,但我无法通过类型检查获得以下内容。我最终得到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)
                              ^^^ 
        });
    }
}

1 个答案:

答案 0 :(得分:2)

编译器唯一知道Restos的真实情况是,当你用number对其进行索引时,你会得到一个Resto。仅仅因为某些东西有数字索引签名并不意味着它是一个数组(例如,对象{0: 'hello', 1: 'world'}可以用数字索引以生成字符串,但是你不能在其上调用.map

您可能想要写的是type Restos = Array<Resto>而不是界面。