即使返回类型是对象,也无法访问对象属性-React + Typescript

时间:2020-10-22 17:20:15

标签: reactjs typescript

我有一个React状态,它是对象数组,我正在setState方法中向它添加一个对象。对象正确添加。

现在,当我尝试通过其他功能访问对象时,无法访问对象的属性。我可以在控制台上看到该对象具有属性。我在stackoverflow上检查了其他与异步调用相关的类似问题,但我的问题不属于该问题。

我已经创建了这样的对象数组,

<div class="post-arrow post-arrow--right"></div>

在构造函数中将其初始化为null。

并向其添加对象,

interface ResultState{
....
localArray : object[];
}

我的控制台输出:

localArray : this.state.localArray.concat(Items1)

现在我要访问对象的地址。 我的代码就是这样,

localArray -> [{}]
              0:
                 name: 'abcd'
                 roll_num: 10
                 address: [{...}]
                     0: {Street:  'abcdefgh', aptnum: 1}

但是我得到的错误属性地址在类型对象上不存在。

当我执行console.log(typeof(resultObject))时,会出现对象。

这可能是什么原因?

2 个答案:

答案 0 :(得分:0)

是的,这是因为数组的类型。将其更改为localArray: any[]后,它可以正常工作!

答案 1 :(得分:0)

很高兴您能使用它,但是使用类型<li class="no-page">并不好,因为它表明您的数组可以包含任何内容。您真正想要的是让Typescript知道数组中特定对象的类型。根据您发布的内容,它应该类似于:

any[]

这样,打字稿知道您的数组元素是对象,但也知道哪些属性有效,以及每种属性的类型。