未定义,无法分配给用户类型

时间:2019-04-11 19:42:01

标签: angular typescript angular7

我收到以下错误

error TS2322: Type 'MyConfig| undefined' is not assignable to type 'MyConfig'.
Type 'undefined' is not assignable to type 'MyConfig'.

我们可以从一个组件中调用具有以下输入变量的MyAppComponent

  @Input() userInfoInput?: UserInfo;

  @Input() MyConfigInput?: MyConfig;

UserInfo是如下所示的接口模型

export interface UserInfo{
   [key: string]: any;
   firstName: string | undefined;
   middleName: string | undefined;
   lastName: string | undefined;
 }

而MyConfig是一个类

export class MyConfig{
  private _name!: string;
  private _description!: string;
  private _version!: string;
  private _dateFormat!: string;
  private _maxContentLength!: number;

  constructor(
     name: string,
     description: string,
     version: string,
     dateFormat: string,
     maxContentLength: number,
     ) {
     this.name = name;
     this.description = description;
     this.version = version;
     this.dateFormat = dateFormat;
     this.maxContentLength = maxContentLength;
   }

在当前功能代码中,@Input变量使用非空声明操作符!修饰,因为我无法在构造函数中明确定义它们。我想改用? / MyConfigInput : MyConfig | undefined,但出现此错误,无法为这些类型分配undefined。我已将我创建为@Input的其他类型提供给该组件进行测试,它们没有报告相同的错误。因此,我想我为什么不能特别为这些类型分配undefined缺少一些直觉。

任何对此问题的见解将不胜感激!

0 个答案:

没有答案