【问题标题】:Argument of type 'string | null' is not assignable to parameter of type 'String'. Type 'null' is not assignable to type 'String'. [angular]'string | 类型的参数null' 不可分配给“字符串”类型的参数。 “null”类型不能分配给“String”类型。 [角度]
【发布时间】:2021-06-16 23:46:04
【问题描述】:

我试图用我的 component.ts ( angular ) 中的一个变量来影响 class.ts 中的一组属性,如下所示:

this.UserPaiemet.setDate(this.DateN)

IDE 向我显示此错误:

Argument of type 'string | null' is not assignable to parameter of type 'String'.
  Type 'null' is not assignable to type 'String'.

131     this.UserPaiemet.setDate(this.DateN)

我不知道该如何解决。

我的班级:

export class UserPaiemet
{
 private id!:Number;
 private date!:String;
 private nbrmois!:Number;
}

还有我的组件方法

date = new Date()
  DateN  = this.datePipe.transform(this.date, "yyyy-MM-dd")
  UserPaiemet= new UserPaiemet()
  updateUserPai()
  {
  this.UserPaiemet.setDate(this.DateN)
  }

【问题讨论】:

  • 您可以包含this.dataPipe 代码吗? TypeScript 抱怨这可能会返回 null,然后你不能将它传递给 setDate
  • 它是一个来自 angular 的管道库,我在构造函数中声明它' private datePipe: DatePipe'
  • 您只需要处理来自datePipe.transform 的可能的null 值。以if 为例

标签: angular


【解决方案1】:

请使用以下约定来声明类型,例如(字符串 -> 字符串)

export class UserPaiemet {
    private id!: number;
    private date!: string;
    private nbrmois!: number;
}

date = new Date();
DateN = this.datePipe.transform(this.date, "yyyy-MM-dd") || ''; // or dummy date here
UserPaiemet = new UserPaiemet();
updateUserPai();
{
    this.UserPaiemet.setDate(this.DateN);
}

【讨论】:

  • 也可能在你的情况下this.datePipe.transform返回null,你需要处理这个
【解决方案2】:

尝试将您的数据类型更改为小写

export class UserPaiemet
{
 private id:number;
 private date:string;
 private nbrmois:number;
}

【讨论】:

  • 仍然没有任何变化
【解决方案3】:

在 javascript 中,“数字”是原始类型,“数字”是对象类型。作为 Java int 和 Integer 的比较(int 是原始类型 Integer 而不是对象类型),因此在您的情况下 Number 不等于 number。但在您的情况下,问题是另一个:您不能将 null 或 string 分配给 String 类型。可能 ide 不能很好地识别对象类型,所以尝试将其放入小写并执行它。

否则试试看:

export class UserPaiemet
{
 private id:number;
 private date:string|null;
 private nbrmois:number;
}

【讨论】:

    猜你喜欢
    • 2021-09-30
    • 2018-04-05
    • 2021-09-06
    • 2021-06-12
    • 2021-07-14
    • 2021-09-22
    • 1970-01-01
    • 2022-01-27
    • 2021-10-02
    相关资源
    最近更新 更多