我已定义了一个对象,并希望使用允许的可选参数扩展该对象。我正在使用lodash迭代数组并确定是否允许或不允许。当我尝试将myArray的赋值设置为temp时,即使我的对象符合可分配的正确格式,我也会收到错误。
输入'({}& MyObject& {allowed:boolean;})[]'不是 可分配给' [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 :(得分:0)
由于MyObject[]
和[MyObject]
的类型不同,_.map<T>(arr:T[])
会返回T[]
而不是[T]
。
您应明确指定myArray
的类型如下:
this.myArray: MyObject[] = [new MyObject(0, '', '')]
答案 1 :(得分:0)
使用WebStorm遇到此问题时,虽然不是很漂亮,但是可以通过类似方法解决此问题。
export class MyObject {
constructor(
public id: number,
public shortName: string,
public name: string,
public allowed?: boolean
){}
}
var temp = _.map(this.myArray, function(element) {
var object: MyObject = _.extend({}, element, <{allowed: boolean}>{allowed: _.includes(event, element.id)});
return object;
});
this.myArray = temp