TypeScript定义接口对象数组时报属性不存在错误怎么解决?
TypeScript 数组类型属性不存在报错修复方案
错误原因
你声明的myData是myInterface[]数组类型,而非单个myInterface对象类型,数组本身未定义lastUpdated属性,因此触发类型校验报错
修复方案
根据你的实际业务需求二选一即可:
方案1:给数组内每一项都设置更新时间
遍历返回的数组,给每个元素单独赋值lastUpdated属性:
then((data: myInterface[]) => { this.myData = data.map(item => ({ ...item, lastUpdated: new Date() })) })
方案2:给整个数据集设置统一的更新时间
如果lastUpdated是整个数组的公共属性,你需要调整原有接口和变量声明:
- 调整接口定义:
// 单条数据的接口 export interface MyItem { picture: string } // 包含数组和全局更新时间的外层接口 export interface MyDataSet { list: MyItem[], lastUpdated: Date }
- 组件内调整变量声明和赋值逻辑:
import { MyItem, MyDataSet } from "./interfaces/myInterface" // 初始值对应调整 myData: MyDataSet = { list: [], lastUpdated: new Date() }; // 接口请求后赋值 then((data: MyItem[]) => { this.myData.list = data; this.myData.lastUpdated = new Date(); })
小提示:TypeScript 社区通用规范中,接口名建议使用大驼峰写法,便于和普通变量、函数做区分。
内容的提问来源于stack exchange,提问作者yavg
相关产品推荐
相关产品推荐

