属性没有初始化器,并且在构造函数中没有明确赋值

阿尼鲁德

我给时出错

export class UserComponent implements OnInit {
user:User;
constructor(){
    
    
}

ngOnInit(){  

    this.user = {
        firstName : "test",
        lastName : "test",
        age : 40,
        address: {
            street : "Test",
            city : "test",
            state: "test"
        }
    }
    
  }

}

我收到此错误:

Property 'user' has no initializer and is not definitely assigned in the constructor.

user 继承自 User.ts,User.ts 包含以下代码:

export interface User {
firstName:string,
lastName:string,
age?:number,
address?:{
    street?: string,
    city?:string,
    state?:string
}


}

添加?到用户在其他文件中显示错误:

添加之前的错误截图?

还有另一个名为 users 的文件夹......这是主要的......现在当我添加?在这里,它向我展示了这个错误。

添加问号后报错截图

米克尔·克里斯滕森

这是由 TypeScript 的 Strict Class Initialization 引起的。

https://www.typescriptlang.org/docs/handbook/release-notes/typescript-2-7.html#strict-class-initialization

要解决此问题,您必须声明该类型可以同时为 Foo|undefined,或者使用 '!' 表示根据上述文档确定分配的符号:

情况1:

@Component({...})
export class Component {
  @Input() myInput: string|undefined;
}

我们指出类型可以是字符串或未定义。

案例2:

@Component({...})
export class Component {
  @Input() myInput!: string;
}

在这种情况下,我们使用 ! 符号表示我们知道它myInput没有在构造函数中初始化,我们将在其他地方处理它。

替代解决方案

如果您不关心严格的类初始化,您可以tsconfig.json通过在编译器选项中添加一个标志来完全禁用该功能

{
 "compilerOptions": {
    "strictPropertyInitialization": false
  }
}

注意:您必须重新启动 TypeScript 服务器才能重新应用 compilerOptions。实现此目的的最简单方法是简单地重新启动您的 IDE。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

属性“ form”没有初始化程序,并且在构造函数中未明确分配

属性“ ...”没有初始化程序,并且在构造函数中未明确分配

ngx-bootstrap modal - 属性 'modalRef' 没有初始化器,并且在构造函数中没有明确分配

Vue Prop没有初始化程序,并且在构造函数中未明确分配

使用@Input装饰器时,如何解析“属性'foo'没有初始化程序,并且在构造函数中未明确分配”?

属性“searchText”没有初始值设定项,并且在构造函数中没有明确分配?

TypeScript通过返回构造对象来抱怨“没有初始化程序,并且在构造函数中未明确分配”

我该如何解决打字稿错误“ x”没有初始化程序并且在构造函数中未明确分配?

如何修复“属性没有初始值设定项并且未在构造函数中明确分配”错误?

在没有构造函数的类中初始化变量

依赖项没有复制构造函数或赋值运算符时的 C++ 初始化器列表

错误C2512:没有合适的默认构造函数-为什么在构造函数中初始化属性?

有没有一种方法可以在构造函数中初始化EII属性?

C ++没有匹配的构造函数的[]初始化

初始化状态,没有构造函数在反应

没有构造函数的C ++零初始化

构造函数没有初始化正确的值

C ++类:在没有构造函数重载的情况下初始化属性

“没有匹配的初始化构造函数” Rad Studio 10 Clang编译器

c++ 中的初始化没有匹配的构造函数错误。我的构造函数有什么问题?

(Re)在cpp中初始化没有复制构造函数的对象

vscode中的C ++:错误:没有匹配的构造函数来初始化'std :: thread'

在C ++中没有匹配的构造函数来初始化可变参数模板

如何允许从Ruby中的特定类初始化一个类,并且在其他地方没有?

每个构造函数成员初始化器列表初始化const数据成员,错误:没有匹配的调用函数

有没有办法在特定的构造函数中延迟初始化一个昂贵的字段?

编译器没有发现构造函数初始化期间传递的实例变量和参数之间存在歧义?

如果没有或只有部分字段在构造函数初始化会发生什么

错误:没有匹配函数用于构造函数初始化的调用