javascript - 设置任何 javascript 对象属性的类型
问题描述
我有以下 javascript 对象
venue = {
id: 0,
name: '',
venueimage_set: [
{
imageurl: '',
},
]...
然后稍后在我的代码中更改对象:
this.venue.venueimage_set[+image] = this.venue.venueimage_set[+image].imageurl;
为了使图像查看器工作,我只需要图像的 url,而不是图像 url 所属的键。因此,我将键中的内容设置为键值,即图像 url。
然后我得到这个噪音。
ERROR in mainroot/venuepage/venuepage.component.ts(171,25): error TS2322: Type 'string' is not assignable to type '{ imageurl: string; }'.
mainroot/venuepage/venuepage.component.ts(175,127): error TS2339: Property 'imageurl' does not exist on type 'string'.
我希望打字稿忽略打字,让我这样做。我会怎么做?
解决方案
这是您尝试执行的类型安全版本:
function toVenue<T>({id, name, venueimage_set}: T) {
return {
id,
name,
venueImageSet: venueimage_set.map(el => el.imageurl)
};
}
设置时可以使用哪个venue
:
const venue = toVenue({
id: 0,
name: '',
venueimage_set: [{
imageurl: '',
}]
});
这里是不安全的版本(请不要这样做):
this.venue.venueimage_set[+image] = this.venue.venueimage_set[+image].imageurl as any;
推荐阅读
- reactjs - 材质 UI 浮动标签
- node.js - DynamoDB、Lambda 函数/自定义模块超时
- docker-compose - 关于在 Docker-Compose 中设置 Apache Ignite 的问题
- angular - 在 tomcat 上部署 Maven Angular 6
- php - 多维数组和合并列上的重复值
- node.js - 如何在 Node Js 应用程序中创建应用程序变量
- pdf - 使用 Select.Pdf 填写 PDF 表单
- reactjs - React 服务器端渲染 - 生成不同的 html 服务器端到客户端的性能影响是什么?
- selenium-webdriver - 量角器 - 由于固定的顶部导航栏,无法访问元素
- vue.js - VueJS:如何每个周期渲染几个元素?