2016-12-05 52 views
0

我已经定义了一个对象,并希望用允许的可选参数来扩展该对象。我正在使用lodash遍历数组,并确定是否希望允许或不允许。当我尝试将myArray赋值给temp时,即使我的对象符合可分配的正确格式,我也会收到一个错误。lodash属性扩展后Typescript不可赋值错误

类型 '({} &为MyObject & {允许:布尔;})[]' 是不 分配给输入 '[MyObject来]'。属性'0'在类型 '({} & MyObject & {allowed:boolean;})[]'中缺失。

export class MyObject { 
    constructor(
    public id: number, 
    public shortName: string, 
    public name: string, 
    public allowed?: boolean 
){} 
} 

var temp = _.map(this.myArray, function(element) { 
    if (_.includes(event, element.id)) 
    return _.extend({}, element, {allowed: false}); 
    else 
    return _.extend({}, element, {allowed: true}); 
}); 
this.myArray = temp 

回答

0

由于MyObject[][MyObject]类型是不同的,_.map<T>(arr:T[])返回T[]而非[T]

应明确指定的myArray类型如下:

this.myArray: MyObject[] = [new MyObject(0, '', '')]