How to make object as array? This TypeScript library makes objects as Array like and iterable. Open lopatnov/make-iterable project and see for yourself.
APACHE-2.0 License
How to make object as array? This TypeScript library makes objects as Array like and iterable. This change allows to iterate objects, functions and their prototypes. Making prototype iterable by this library allows to create iterable objects from classes.
npm install @lopatnov/make-iterable
<script src="//lopatnov.github.io/make-iterable/dist/make-iterable.min.js"></script>
import makeIterable from "@lopatnov/make-iterable";
var makeIterable = require("@lopatnov/make-iterable");
makeIterable<T>(value: T): T & any[]
Apply makeIterable
method to an object, function or it's prototype and use Array methods
let x = {
hello: "world"
};
let iterableX = makeIterable(x); // <-- now object iterableX has hello property and Array properties
iterableX.push(10); // [10]
iterableX.push(20); // [10, 20]
iterableX.push(30); // [10, 20, 30]
iterableX.push(40); // [10, 20, 30, 40]
iterableX.pop(); // [10, 20, 30]
for (const index in x) {
/*
"Index [0] = 10"
"Index [1] = 20"
"Index [2] = 30"
"Index [hello] = world"
*/
console.log(`Index [${index}] = ${x[index]}`);
}
for (const value of x) {
/*
10
20
30
*/
console.log(value)
}
console.log(`x === iterableX ? ${x === iterableX}`); // true
console.log(`indexOf(30) = ${iterableX.indexOf(30)}`); // 2
console.log(`[...iterableX] = ${[...iterableX]}`); // [10,20,30]
console.log(`iterableX.hello = ${iterableX.hello}`); // "world"
class Simple {
constructor(message) {
this.message = message;
}
}
makeIterable(Simple.prototype); // <-- now Simple.prototype has Array properties
let z = new Simple('Length is not enumerable now');
z.push([1,2], [3,4], [5,6]);
for (var index in z) {
/*
"z[0]=1,2"
"z[1]=3,4"
"z[2]=5,6"
"z[message]=Length is not enumerable now"
*/
console.log(`z[${index}]=${z[index]}`)
}
See, how it's working: https://runkit.com/lopatnov/make-iterable-demo-1.3.1
Test it with a runkit: https://npm.runkit.com/@lopatnov/make-iterable
License Apache-2.0
Copyright 2019β2021 Oleksandr Lopatnov