【问题标题】:Property 'length' does not exists on type 'ITravel'. TS2339类型“ITravel”上不存在属性“长度”。 TS2339
【发布时间】:2020-11-06 17:05:47
【问题描述】:

我无法弄清楚如何在我从 axios.get 响应中获得的 json 对象中转换数组。我不断得到**属性'长度'在类型''上不存在。 TS2339 错误。如何摆脱这个错误? json 合约如下。我跳过了一些代码,只放了相关部分。

   {
    "someStuff":{
         "items":[
                   {
                     "id":1
                   },
                   {
                     "id":2
                   }
                 ]
        }
   }

ITravel.tsx

   export interface ISomeStuff{
   }

   export interface IItems{
   id:number;
   }

   export interface ITravel extends ISomeInterface{
   items: IItems[];
   }

Route.tsx

import React from 'react';
import FormLabel from 'react-bootstrap/FormLabel';
import { ITravel } from './ITravel.tsx';

  type Props = {
    iTravel: ITravel;
  }

 const Route = (props: Props) => {
       const { items } = props.iTravel;
       

     return(
          <FormLabel>
            <strong>{items.length}</strong>
          </FormLabel>
     );
 }

【问题讨论】:

  • 您在import { Itravel } 中有错字。应该是ITravel。如果你修复它会改变什么吗?因为否则您的代码似乎可以正常工作:staging-typescript.org/play?ts=4.0.0-beta#code/…
  • 嗨,Alex,我修正了那个错字,这不是问题。我仍然收到该错误

标签: javascript reactjs typescript react-bootstrap react-typescript


【解决方案1】:

由于只能看到您粘贴的代码,我的两个想法是:

  1. 您在 Route.tsx 中的导入,您将 .tsx 包含在 ITravel 的导入中(但可能不太可能)。
  2. 您是否确保已正确访问 JSON 中的数组?即根据您粘贴的内容,它不是:items.someStuff.items。

【讨论】:

    【解决方案2】:

    我发现了问题。基本上,每当我在编译 Route.tsx 之前对其进行更改时,我都需要“保存”ITravel.tsx。不确定这是否与vscode有关。我是新来的反应。在 Visual Studio 中,我不记得每次更改后都这样做。

    【讨论】:

      猜你喜欢
      • 2020-03-27
      • 2016-03-14
      • 2017-02-25
      • 2021-11-24
      • 2019-01-11
      • 2021-05-08
      • 2021-10-15
      • 1970-01-01
      • 2020-12-13
      相关资源
      最近更新 更多