我先从 Angular 调用 Twitter API,然后从 Node 调用,但收到错误消息,表明“对象”类型上不存在属性。但它正确地显示在页面上。
我尝试重命名该属性并查看了我设置的推文服务,但我似乎无法弄清楚出了什么问题。
import { Component, OnInit } from '@angular/core';
import { TweetService } from '../../services/tweet.service';
@Component({
selector: 'app-twitter-page',
templateUrl: './twitter-page.component.html',
styleUrls: ['./twitter-page.component.scss']
})
export class TwitterPageComponent implements OnInit {
tweetsArray;
constructor(
private twitter: TweetService
) { }
ngOnInit() {
this.twitter.getTweets().subscribe(tweet => {
this.tweetsArray = tweet.tweets[0];
console.log(this.tweetsArray);
});
}
}
错误:
ERROR in src/app/main-body/twitter-page/twitter-page.component.ts(20,32): error TS2339: Property 'tweets' does not exist on type 'Object'.
最佳答案
这里的 tweet 是对象类型,没有属性。
您应该定义一个接口(interface)ITweet
并将tweet转换到该接口(interface)。这为推文对象提供了一个形状,并定义了其上可用的属性集。
tweet.ts -
export interface ITweet {
...
};
twitter-page.component.ts - (注意 - .subscribe((tweet:ITweet) => {})
)
import { ITweet } from './tweet.ts';
.
.
.
export class TwitterPageComponent implements OnInit {
.
.
.
ngOnInit() {
this.twitter.getTweets().subscribe((tweet:ITweet) => {
this.tweetsArray = tweet.tweets[0];
console.log(this.tweetsArray);
});
}
}
或者,您也可以将 tweet 转换到任何 (.subscribe((tweet:any) => {})
)。但不建议这样做,因为您将失去类型检查的好处。
关于node.js - 当属性准确显示在页面上时出现属性不存在的错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57879181/