繁体   English   中英

Typescript 错误“从不类型上不存在属性 find()”

[英]Typescript error "property find() does not exist on type never"

我试图让一些 Angular 11 代码在 Angular 14 中工作:

  users = null;

  deleteUser(id: string)
  {
    if (this.users == null) { }
    else
    {
      const user = this.users.find(x => x.id === id);
      ... other stuff
     }
  }

错误在线 const user = this.users.find(... 它说“属性 find() 不存在于类型'never'”...为什么它会认为该类型是 never?它已经检查 this.users != null

TS 试图用它所拥有的信息来猜测 vars 的类型,但如果没有足够的输入信息或上下文,它就不能总是弄清楚

// Help the compiler when declaring vars
let users: Array<Users> | null = null;


deleteUser(id: string)
  {
    if (this.users !== null) {
      // TS will find the "find" function here,
      // because it knows it's a Users array
      const user = this.users.find(x => x.id === id);
    }
  }

确保定义你的道具类型,如果你没有定义你的道具类型,你会得到错误type never

例如,也许你可以让你的 props user像这样:

user: Array<any>; // if you're sure this is an array

现在在您的deleteUser方法中,您应该不必使用 if 条件,只需像这样简单:

deleteUser(id: string): void {
  const user = (this.users || []).find((x) => x.id === id);
  if (!user) return;
  // do some stuff
}

现在它将正常工作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM