Angular4和TypeScript属性在类型any[]上不存在
我似乎无法理解这件事。。。我从api获取数据并将其存储为任意[]。我正试图得到这样的数据Angular4和TypeScript属性在类型any[]上不存在,angular,typescript,Angular,Typescript,我似乎无法理解这件事。。。我从api获取数据并将其存储为任意[]。我正试图得到这样的数据 this.data.results[i].datas[j].dataType 但是我得到的错误属性results不存在于any[]类型上。我试着看了很多其他的问题和答案,但我似乎不明白 (我是否应该创建一个数据对象,而不是将数据分配给任何[],而是将其分配给对象?) 谢谢你的帮助 您应该将this.data的类型定义更改为: data: {results?: any[]} = {}; 我总是(如果可能的
this.data.results[i].datas[j].dataType
但是我得到的错误属性results不存在于any[]类型上。我试着看了很多其他的问题和答案,但我似乎不明白
(我是否应该创建一个数据对象,而不是将数据分配给任何[],而是将其分配给对象?)
谢谢你的帮助 您应该将
this.data
的类型定义更改为:
data: {results?: any[]} = {};
我总是(如果可能的话)至少声明这样一个接口:
interface IDataset {
dataType: string;
value: string;
// Whatevery your dataset holds
}
interface IResultset {
datas: IDataset[9]
}
interface IData {
results: IResultset[];
}
class SomeClass {
data: IData[];
someFunction() {
this.data.results[i].datas[j].dataType = "whatever";
}
}
通过这种方式,您可以获得数据的智能感知,必须以有意义的方式构造数据,并且可以在客户端和服务器端使用这些接口(如果您也在服务器上工作)您可以输入更多代码以帮助您吗?以及准确完整的错误消息。还要添加打印值
console.log(…)
准确返回的内容。你提到了any[]
,但是你的代码没有显示你是如何使用它的。你是遇到了typescript编译错误还是运行时错误?是的,我知道,我真的应该声明对象/接口。但是我的固执起了作用,我想用这种方式来解决这个问题:P现在我用这种方式来解决这个问题,我将创造这个对象哈哈,我只是想要victory@PierreDuc我有一个动态表单,在编译时不知道任何表单控件,在编译时我得到的ex:Property“name”在类型“{}”上不存在。我只在使用aot
编译时收到此错误。请将数据类型更改为any
,或将其更改为{name?:string}