角度错误 TS2564:属性“users”没有初始值设定项,并且未在构造函数中明确分配

时间:2021-02-04 18:59:02

标签: angular typescript

我正在使用 angular 使用“https://coursetro.com/posts/code/171/Angular-7-Tutorial---Learn-Angular-7-by-Example”中的示例构建此应用。
它是一个确切的代码,但我仍然收到 "user:Object"

的错误

我该如何解决这个错误?

<块引用>

错误 TS2564:属性“users”没有初始值设定项 在构造函数中明确赋值。

12 个用户:对象; ~~~~~

Here is the exact code as per website:
import { Component, OnInit } from '@angular/core';
import { DataService } from '../data.service';

@Component({
  selector: 'app-home',
  templateUrl: './home.component.html',
  styleUrls: ['./home.component.scss']
})
export class HomeComponent implements OnInit {
  //h1Style:boolean = false;

  users: Object;

  constructor(private data: DataService) { }

  ngOnInit(): void {
    this.data.getUsers().subscribe(data => {
        this.users = data
        console.log(this.users);
      }
    );
  }


}

我的 Angular 基于 ng 版本: 角 CLI:11.1.2

节点:14.15.4

操作系统:win32 x64

角度:11.1.1

...动画、通用、编译器、编译器-cli、核心、表单

...平台浏览器、平台浏览器动态、路由器

常春藤工作区:是

包版本


@angular-devkit/architect 0.1101.2

@angular-devkit/build-angular 0.1101.2

@angular-devkit/core 11.1.2

@angular-devkit/schematics 11.1.2

@angular/cli 11.1.2

@schematics/angular 11.1.2

@schematics/更新 0.1101.2

rxjs 6.6.3

打字稿 4.1.3

1 个答案:

答案 0 :(得分:2)

正如 @alcfeoh 在评论中指出的那样,您收到此错误是因为您正在定义一个变量但没有为其声明值。简短的回答是,如果您不想声明一个值,那么... just bang it:

users!: Object;

打字稿抛出这个错误的原因是为了防止以下情况:

someNumber: number;

如果没有包含声明,那么 someNumber 的值将是未定义的,即使我们没有明确地将此类型列为 someNumber: number | undefined;。但在许多其他语言中,someNumber 会收到一个默认值,如 0。然而,这不是 Javascript 的工作方式。如果在这种情况下您要执行 someNumber + 1,结果将是 null