It's a string because standard arrays in JavaScript aren't really arrays at all¹, they're objects with properties for the array entries, and object property names (keys) are strings, Symbols, or (soonish) private names.
You can't make it a number by default in a for-in, but you can convert it to a number, or use other forms such as a standard for or a forEach call:
for (var key = 0; key < array.length; ++k) {
    // ...
}
// ..or
array.forEach((entry, key) => {
    // ...
});
Using for-in to loop through an array is almost always an anti-pattern. See my answer here for a thorough rundown of your various options for looping through arrays.
¹ That's a post on my anemic little blog.