角度错误 TS2564:属性“用户”没有初始化程序,并且未在构造函数中明确分配

Posted

技术标签:

【中文标题】角度错误 TS2564:属性“用户”没有初始化程序,并且未在构造函数中明确分配【英文标题】:Angular error TS2564: Property 'users' has no initializer and is not definitely assigned in the constructor 【发布时间】:2021-05-09 03:18:01 【问题描述】:

我正在使用“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

【问题讨论】:

试试小写对象... 即使使用小写对象也会出现同样的错误 这本身不是一个错误,更多的是一个 Typescript 警告,您没有初始化此属性,因此可能在运行时未定义。您可以忽略它,因为代码应该按原样编译。 这能回答你的问题吗? Property '...' has no initializer and is not definitely assigned in the constructor 抱歉,根据示例教程仍然出现错误。它不会让我使用用户:对象运行。如果我删除它运行正常 【参考方案1】:

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

users!: Object;

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

someNumber: number;

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

【讨论】:

或者,您可以使用空对象对其进行初始化:users: object = ;【参考方案2】:

你应该在 tsconfig.json/"compilerOptions" 下添加这段代码

"strictPropertyInitialization": false,

【讨论】:

以上是关于角度错误 TS2564:属性“用户”没有初始化程序,并且未在构造函数中明确分配的主要内容,如果未能解决你的问题,请参考以下文章

角度:错误 TS2339:“对象”类型上不存在属性“数据”

无法以角度显示用户名

接收到 websocket 消息后,如何从组件 **ts** 文件中重新呈现角度组件视图?

外部库中的“TS2729 [错误]:在其初始化之前使用的属性‘边界’”

每当用户选择错误的角度输入时,向用户显示错误消息?

component.ts 文件中的错误限制了角度渲染