类型'字符串|的参数用户'不能分配给'string'类型的参数

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了类型'字符串|的参数用户'不能分配给'string'类型的参数相关的知识,希望对你有一定的参考价值。

在下面的代码中,出现在角度材料示例中:https://stackblitz.com/angular/gorglnbmork?file=app%2Fautocomplete-display-example.ts

  ngOnInit() {
     this.filteredOptions = this.myControl.valueChanges
      .pipe(
        startWith({} as User),
        map(user => user && typeof user === 'object' ? user.name : user),
        map(name => name ? this.filter(name) : this.options.slice())
      );
  }

我在this.filter(name)上有以下错误:'string |类型的参数用户'不能分配给'string'类型的参数。

为什么?可以做些什么来避免它?

添加到此帖后:

我通过对filter的参数进行以下更改来纠正错误:

filter(name: string | User): User[] {
    return this.options.filter(option =>
      option.name.toLowerCase().indexOf(name.toLowerCase()) === 0);
}

但我不知道什么字符串|用户意味着在此之后,name.toLowerCase()上存在一个问题,如字符串|用户没有方法toLowerCase()

感谢您的反馈!

答案

您的用户的类型为User,而不是字符串。问题出在你的身上

displayFn(user: User): string {
    return user ? user.name : user.name;
  }

您希望返回的值为User类型,但在“!user”的情况下,您返回的用户类型为User而不是string。因此,您可以将函数的类型指定为字符串|用户或尝试始终返回一个字符串。

以上是关于类型'字符串|的参数用户'不能分配给'string'类型的参数的主要内容,如果未能解决你的问题,请参考以下文章

FullCalendar计划程序 - 类型'字符串'不能分配给'EmitterInterface []类型

Typescript类型'string'不能分配给类型

在 swift 中将 String 类型数组转换为 Float 类型数组 不能将类型 'String' 的值分配给类型 'Double' 的下标。

参数类型“Type”不能分配给参数类型“FirebaseUser”

参数类型“PointerEvent”不能分配给参数类型“PointerDownEvent”

flutter error:参数类型'Future '无法分配给参数类型'小部件'