当前位置: 首页 > 知识库问答 >
问题:

typescript - ts 总是提示空object没有XX属性,要怎么改?

查锦程
2024-03-04




红色波浪线总是提示空的{}没有XX属性,这是从vue2的方法搬过来的,vue2是可以的,vue3要怎么改

export interface PlaneData {  id?: number;  code?: string;  model?: string;  label?: string;  airlines?: string;  type_id?: number;  type_value?: string;  property_id?: number;  property_value?: string;  first_seats?: number;  biz_seats?: number;  economy_seats?: number;  first_map?: object | undefined;  biz_map?: object | undefined;  economy_map?: object | undefined;  first_fare?: number;  biz_fare?: number;  economy_fare?: number;  sort?: number;  memo?: string;  enabled?: number;  create_by?: string;  update_by?: string;  short_name?: string;}const RowCol = (type: string, data: Object | RowColParam | undefined) => {  mapType.value = type;  isVisible.value = true;  if (formData.value.economy_map.rows && formData.value.economy_map.start_row) {    let rowNumber = ref<string[]>([]);    let last =      Number(formData.value.economy_map.rows) +      Number(formData.value.economy_map.start_row);    for (let i = formData.value.economy_map.start_row; i < last; i++) {      rowNumber.value.push(i);    }    localStorage.setItem("economy", JSON.stringify(rowNumber));  }  if (data) {    ranks.value.row = data.rows;    ranks.value.col = data.columns;    ranks.value.start_row = data.start_row;    ranks.value.columns_name = data.columns_name;    ranks.value.tableData = data.seats;  }};

共有3个答案

殳毅
2024-03-04
export interface PlaneData {  ...  economy_map?: RowColParam;  ...}

看你的代码,那几个属性貌似是 RowColParam 中定义的,那只需要把 economy_map 声明为这个类型就可以。另外,用了 ? 表示可选,就不需要加 | undefined,自带。

魏勇军
2024-03-04

economy_map: object => economy_map: Record<string, any>

何兴安
2024-03-04

加个if判空

这句加了判空,你试试
if (formData?.value?.economy_map?.rows && formData?.value?.economy_map?.start_row)

const RowCol = (type: string, data: Object | RowColParam | undefined) => {  mapType.value = type;  isVisible.value = true;  if (formData?.value?.economy_map?.rows && formData?.value?.economy_map?.start_row) {    let rowNumber = ref<string[]>([]);    let last =      Number(formData.value.economy_map.rows) +      Number(formData.value.economy_map.start_row);    for (let i = formData.value.economy_map.start_row; i < last; i++) {      rowNumber.value.push(i);    }    localStorage.setItem("economy", JSON.stringify(rowNumber));  }  if (data) {    ranks.value.row = data.rows;    ranks.value.col = data.columns;    ranks.value.start_row = data.start_row;    ranks.value.columns_name = data.columns_name;    ranks.value.tableData = data.seats;  }};

参考这里:
TS报错:类型‘object‘上不存在属性‘product_id’

 类似资料:
  • topAncestorElement 的类型是 call 的返回值 undefined; 我希望使用 [].find.call 这种写法,要怎么修改呢? as unknown as HTMLElement 这样断言就行了。之前没注意看提示...

  • 假设有一个类库X的输入文件,其中包含一些接口。 为了使用这个库,我需要传递一个与。当然,我可以在源文件中创建相同的接口: 但这样一来,我就有了让它和库中的一个保持最新的负担,而且它可能非常大,并导致大量代码重复。 因此,有没有办法“提取”接口的这个特定属性的类型?类似于(这不起作用,导致“找不到名称I2”错误)。 编辑:在TS操场上玩了一会儿后,我注意到以下代码完全实现了我想要的: 但是,它需要声

  • TypeScript抱怨HTMLElement没有value属性,但当我在JavaScript中使用它时,它可以正常工作。 在JavaScript中,var inputValue=document。getElementById('input1');安慰日志(inputValue.value);//它给出了输入元素的值 我可以知道为什么TypeScript抱怨吗?

  • 为什么需要这样AddDataType<'AlarmTips'> 才能正确获取类型? 不是已经使用 <T>进行关联了吗?

  • 声明一个布尔类型的值,将它改为123不会提示报错 鼠标放到pagination组件上去没有任何显示,之前可以ctrl+鼠标左键可以跳转到组件里面去了,现在所有的import都不行了,这是为啥