Home > Software design >  Typescript error "property find() does not exist on type never"
Typescript error "property find() does not exist on type never"

Time:09-23

I'm trying to get some Angular 11 code working in Angular 14:

  users = null;

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

The error is on the line const user = this.users.find( ... It says "property find() does not exist on type 'never'"... why would it think that the type is never? It has already checked that this.users != null

CodePudding user response:

Make sure to define your props type, if you're not define your props type, you will get error type never.

For an example, maybe you can make your props user like this:

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

Now in your deleteUser method, you should have not to use if condition, just make it simple like this:

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

Now it will working fine.

CodePudding user response:

TS tries to guess the type of vars with the info it has, but it can't always figure it out if no enough typing info or context is present

// Help the compiler when declaring vars
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);
    }
  }
  • Related