Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/475.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 财产';xxx和x27;不存在于类型';{}';_Javascript_Angular_Typescript_Observable - Fatal编程技术网

Javascript 财产';xxx和x27;不存在于类型';{}';

Javascript 财产';xxx和x27;不存在于类型';{}';,javascript,angular,typescript,observable,Javascript,Angular,Typescript,Observable,我今天在我的angular应用程序中遇到了一个奇怪的行为 ERROR in src/main(A,B): error TS2339: Property 'XXX' does not exist on type '{}'. 错误发生在以下代码行 xxx.subscribe(data => { this.var = data.XXX }); 所以基本上我订阅了一个可观测数据,并将数据从可观测数据映射到一个全局变量。我的angular应用程序按预期工作,所以这个错误似乎对应用程序本身

我今天在我的angular应用程序中遇到了一个奇怪的行为

ERROR in src/main(A,B): error TS2339: Property 'XXX' does not exist on type '{}'.
错误发生在以下代码行

xxx.subscribe(data => {
    this.var = data.XXX
});
所以基本上我订阅了一个可观测数据,并将数据从可观测数据映射到一个全局变量。我的angular应用程序按预期工作,所以这个错误似乎对应用程序本身没有影响,但我仍然无法找出这里出了什么错。下面是
数据的控制台日志:

console.log(data)
//{"XXX": "test"}

Typescript抱怨数据中没有属性,您可以使用任何属性或创建该属性的接口

xxx.subscribe((data:any) => {...}

您将数据实例化为一个对象示例:
data={}
。 由于对象没有
XXX
属性,因此会出现此错误。 所以解决方案将是
data:{XXX:string,YYY:number….}={}


否则,您可以使用
数据['XXX']
访问XXX,这是最简单的选项

如果改用
数据['XXX']
怎么办?键入
{}
不包含
XXX
属性,这就是原因。可能重复感谢您的回复,这种情况下的最佳做法是什么?请使用接口this@Sajeetharan谢谢你的回复,投票通过了。另一方面,链接上的示例并不清楚。你能给你的答案添加一个例子吗?
data['XXX']
应该是这里的答案。不需要接口、模型或特定类型。对一个简单的对象使用这样的东西绝对没有好处。如果需要,可以将
数据
重命名为更具体的数据类型。是的,您可以通过这种方式实现所需的行为。但作为一种最佳实践,最好使用接口之类的东西。否则,您将很少获得Typescript的真正好处。作为最佳实践,不要首先返回带有一个属性的数据对象类型。直接返回属性。