node.js - 正确显示在页面上时出现属性不存在的错误
问题描述
我从 Angular 然后从节点调用 twitter API,但我收到一个错误,即“对象”类型上不存在属性。但它正确显示在页面上。
我尝试重命名该属性并查看了我设置的推文服务,但我似乎无法弄清楚出了什么问题。
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 是没有属性的 Object 类型。
您应该定义一个接口ITweet
并将推文投射到该接口。这为推文对象提供了一个形状,并定义了它的可用属性集。
推文.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);
});
}
}
或者,您也可以将推文投射到任何 ( .subscribe((tweet:any) => {})
)。但不建议这样做,因为您将失去类型检查的好处。
推荐阅读
- julia - 从匿名函数访问另一个函数的参数
- python - Python正则表达式用一个或多个单词验证名称?
- ruby-on-rails - 在相同的 2 个对象之间有 2 个不同的关联通常是不好的做法吗?
- algorithm - 算法 - 最小交换以调整矩阵
- python - 我正在使用 pygame 开发这款游戏,我正在尝试添加动画电源,但我遇到了麻烦
- ios - 在 Flutter VScode 中运行调试 ios 应用程序时出错
- python - 蟒蛇 | 我期待的情节没有出现
- c++ - CMake:OGREConfig.cmake
- python - 在 Chrome 中使用 Headless 模式效果不佳?
- mysql - 创建mysql表并加载数据