【发布时间】:2021-05-05 18:01:07
【问题描述】:
大家好,我需要帮助,我无法将字符串属性推送到键、值数组; 我有
selRoles!: Array<{name:string}>;
// then i try to map the role.names to the typed Array<{name:string}>.because the map function returns an Array<string> without the type name?
this.selRoles = data.roles.map(role => role.name);
//here is my subscribe method which returns some rest data
this.userService.getUserById(this.id).subscribe(data => {
this.user = data;
// i also tried to use forEach with type like this
data.roles.forEach(role => this.selRoles.push({name:role.name}));
console.log("selRoles " +this.selRoles.forEach(item => item.name));
},
error => console.log(error)
)
总是有一个错误,VC代码描述如下 'string' 类型的参数不能分配给 '{ name: string; 类型的参数; }'.ts(2345)
如何将类型指定为字符串的属性?你能帮我吗。非常感谢。谢谢
【问题讨论】:
-
您的
.map()调用返回一个字符串数组,但您需要一个具有name属性的对象数组。data.roles.map(role => {name: role.name});。或者,您可以将类型提示更改为 Array。 -
嗨,是的,我试过了:this.selRoles = data.roles.map(role => {name:role.name});但是编译器仍然说:类型'void []'不可分配给类型'{名称:字符串; }[]'。
-
嗯,是的,我打错了。你需要一个 return 语句,否则解释器会认为 {} 是一个功能块而不是一个对象。在下面的答案中是正确的。
标签: angular typescript