Pixxl
Pixxl

Reputation: 996

Unable to use indexOf on a Typed Array due to TypeScript error

I have defined an Interface, created an array of type Interface and am now attempting to use .indexOf, a method of an Array, and I am getting IDE error complaints that make no sense to me. Hoping someone here may be able to lend a thought to solve this pickle.

Interface

export interface IAddress {
  name: string,
  registrationId: number
}

Code

let friends: IAddress[];

// assume friends has a few elements...

let index = friends.indexOf((friend: IAddress) => {
  return !!(friend.name === 'some name');
});

TypeScript Errors:

Argument of type '(friend: IAddress) => boolean' is not assignable to parameter of type 'IAddress'.
Type '(friend: IAddress) => boolean' is missing the following properties from type 'IAddress': registrationId

If I were to remove the :IAddress from the typed def next to friend: I see this error instead.

Argument of type '(friend: any) => boolean' is not assignable to parameter of type 'IAddress'.
Type '(friend: any) => boolean' is missing the following properties from type 'IAddress': registrationId

Upvotes: 6

Views: 5619

Answers (1)

Yosvel Quintero
Yosvel Quintero

Reputation: 19070

Array.prototype.indexOf() receives a parameter searchElement and a second optional parameter fromIndex.

Updated answer based on @Pixxl comment to use Array.prototype. findIndex() to get index variable:

const friends: IAddress[];

// assume friends has a few elements...
const index = friends.findIndex((friend: IAddress) => friend.name === 'some name');

Upvotes: 9

Related Questions