类型'字符串|的参数用户'不能分配给'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 []类型
在 swift 中将 String 类型数组转换为 Float 类型数组 不能将类型 'String' 的值分配给类型 'Double' 的下标。
参数类型“Type”不能分配给参数类型“FirebaseUser”