node.js - 当属性准确显示在页面上时出现属性不存在的错误

标签 node.js angular

我先从 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/

相关文章:

javascript - 安装 axios 后出现“找不到模块”babel 错误

Javascript 作用域和闭包,变量保持其值

node.js - 如何在 Node.js Web 应用程序中管理 MongoDB 连接?

html - Angular Animations 滑入不起作用,只是出现

angular - ngrx/effects 中的 if/else 怎么办?

angular - 访问嵌套的 FormBuilder Angular6

angular - Material 按钮悬停颜色显示不正确

python - 区分多个 Websocket

node.js - sequelize 迁移未运行

angular - Typescript 属性 'length' 在类型上不存在