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












1















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









share|improve this question




















  • 1





    @Dale Burell -- Would like to know why I can't have a formal gesture of thanks in a question? It's just a bit of nice etiquette and attitude towards fellow developers.

    – Pixxl
    Jan 2 at 2:29











  • meta.stackexchange.com/questions/2950/…

    – Dale Burrell
    Jan 2 at 2:32
















1















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









share|improve this question




















  • 1





    @Dale Burell -- Would like to know why I can't have a formal gesture of thanks in a question? It's just a bit of nice etiquette and attitude towards fellow developers.

    – Pixxl
    Jan 2 at 2:29











  • meta.stackexchange.com/questions/2950/…

    – Dale Burrell
    Jan 2 at 2:32














1












1








1


1






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









share|improve this question
















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






javascript typescript typescript-typings






share|improve this question















share|improve this question













share|improve this question




share|improve this question








edited Jan 2 at 2:28









Dale Burrell

3,35742655




3,35742655










asked Jan 2 at 2:24









PixxlPixxl

516312




516312








  • 1





    @Dale Burell -- Would like to know why I can't have a formal gesture of thanks in a question? It's just a bit of nice etiquette and attitude towards fellow developers.

    – Pixxl
    Jan 2 at 2:29











  • meta.stackexchange.com/questions/2950/…

    – Dale Burrell
    Jan 2 at 2:32














  • 1





    @Dale Burell -- Would like to know why I can't have a formal gesture of thanks in a question? It's just a bit of nice etiquette and attitude towards fellow developers.

    – Pixxl
    Jan 2 at 2:29











  • meta.stackexchange.com/questions/2950/…

    – Dale Burrell
    Jan 2 at 2:32








1




1





@Dale Burell -- Would like to know why I can't have a formal gesture of thanks in a question? It's just a bit of nice etiquette and attitude towards fellow developers.

– Pixxl
Jan 2 at 2:29





@Dale Burell -- Would like to know why I can't have a formal gesture of thanks in a question? It's just a bit of nice etiquette and attitude towards fellow developers.

– Pixxl
Jan 2 at 2:29













meta.stackexchange.com/questions/2950/…

– Dale Burrell
Jan 2 at 2:32





meta.stackexchange.com/questions/2950/…

– Dale Burrell
Jan 2 at 2:32












1 Answer
1






active

oldest

votes


















3














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




  • Here is the API reference.


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');





share|improve this answer





















  • 2





    Awesome, I didn't realize index and indexOf are meant for primitive values whereas find and findIndex are meant for more object-like values. I'd also like to suggest changing this answer to one that uses findIndex instead as it accomplishes the same task without needing to declare an index var outside the scope.

    – Pixxl
    Jan 2 at 2:40






  • 1





    Great comment @Pixxl, thank you.. Edidting the answer to use Array.prototoype.findIndex()...

    – Yosvel Quintero
    Jan 2 at 2:43













Your Answer






StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");

StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);

StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});

function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});


}
});














draft saved

draft discarded


















StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f54000548%2funable-to-use-indexof-on-a-typed-array-due-to-typescript-error%23new-answer', 'question_page');
}
);

Post as a guest















Required, but never shown

























1 Answer
1






active

oldest

votes








1 Answer
1






active

oldest

votes









active

oldest

votes






active

oldest

votes









3














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




  • Here is the API reference.


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');





share|improve this answer





















  • 2





    Awesome, I didn't realize index and indexOf are meant for primitive values whereas find and findIndex are meant for more object-like values. I'd also like to suggest changing this answer to one that uses findIndex instead as it accomplishes the same task without needing to declare an index var outside the scope.

    – Pixxl
    Jan 2 at 2:40






  • 1





    Great comment @Pixxl, thank you.. Edidting the answer to use Array.prototoype.findIndex()...

    – Yosvel Quintero
    Jan 2 at 2:43


















3














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




  • Here is the API reference.


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');





share|improve this answer





















  • 2





    Awesome, I didn't realize index and indexOf are meant for primitive values whereas find and findIndex are meant for more object-like values. I'd also like to suggest changing this answer to one that uses findIndex instead as it accomplishes the same task without needing to declare an index var outside the scope.

    – Pixxl
    Jan 2 at 2:40






  • 1





    Great comment @Pixxl, thank you.. Edidting the answer to use Array.prototoype.findIndex()...

    – Yosvel Quintero
    Jan 2 at 2:43
















3












3








3







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




  • Here is the API reference.


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');





share|improve this answer















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




  • Here is the API reference.


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');






share|improve this answer














share|improve this answer



share|improve this answer








edited Jan 2 at 2:48

























answered Jan 2 at 2:36









Yosvel QuinteroYosvel Quintero

11.7k42531




11.7k42531








  • 2





    Awesome, I didn't realize index and indexOf are meant for primitive values whereas find and findIndex are meant for more object-like values. I'd also like to suggest changing this answer to one that uses findIndex instead as it accomplishes the same task without needing to declare an index var outside the scope.

    – Pixxl
    Jan 2 at 2:40






  • 1





    Great comment @Pixxl, thank you.. Edidting the answer to use Array.prototoype.findIndex()...

    – Yosvel Quintero
    Jan 2 at 2:43
















  • 2





    Awesome, I didn't realize index and indexOf are meant for primitive values whereas find and findIndex are meant for more object-like values. I'd also like to suggest changing this answer to one that uses findIndex instead as it accomplishes the same task without needing to declare an index var outside the scope.

    – Pixxl
    Jan 2 at 2:40






  • 1





    Great comment @Pixxl, thank you.. Edidting the answer to use Array.prototoype.findIndex()...

    – Yosvel Quintero
    Jan 2 at 2:43










2




2





Awesome, I didn't realize index and indexOf are meant for primitive values whereas find and findIndex are meant for more object-like values. I'd also like to suggest changing this answer to one that uses findIndex instead as it accomplishes the same task without needing to declare an index var outside the scope.

– Pixxl
Jan 2 at 2:40





Awesome, I didn't realize index and indexOf are meant for primitive values whereas find and findIndex are meant for more object-like values. I'd also like to suggest changing this answer to one that uses findIndex instead as it accomplishes the same task without needing to declare an index var outside the scope.

– Pixxl
Jan 2 at 2:40




1




1





Great comment @Pixxl, thank you.. Edidting the answer to use Array.prototoype.findIndex()...

– Yosvel Quintero
Jan 2 at 2:43







Great comment @Pixxl, thank you.. Edidting the answer to use Array.prototoype.findIndex()...

– Yosvel Quintero
Jan 2 at 2:43






















draft saved

draft discarded




















































Thanks for contributing an answer to Stack Overflow!


  • Please be sure to answer the question. Provide details and share your research!

But avoid



  • Asking for help, clarification, or responding to other answers.

  • Making statements based on opinion; back them up with references or personal experience.


To learn more, see our tips on writing great answers.




draft saved


draft discarded














StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f54000548%2funable-to-use-indexof-on-a-typed-array-due-to-typescript-error%23new-answer', 'question_page');
}
);

Post as a guest















Required, but never shown





















































Required, but never shown














Required, but never shown












Required, but never shown







Required, but never shown

































Required, but never shown














Required, but never shown












Required, but never shown







Required, but never shown







Popular posts from this blog

MongoDB - Not Authorized To Execute Command

How to fix TextFormField cause rebuild widget in Flutter

in spring boot 2.1 many test slices are not allowed anymore due to multiple @BootstrapWith