I have defined a static property as such:
private static colorsByName: { [index: string]: MyColorClass}
but when I attempt to use for... of from the answer listed here: TypeScript for-in statement
for(let value of MyClass.colorsByName) {
...
}
I get an error:
Type { [index: string]: MyColorClass; } is not an array type or a string type.
If I switch over to using for in, the error goes away, but value is typed as any.
for(let value of MyClass.colorsByName) {
...
}
What is the actual type of value in this case? Ideally I'd like to loop through all values in the colorsByName property, either in a pair approach, or just to get MyColorClass types returned.
for(let value of MyClass.colorsByName) {
// value: MyColorClass
}
What are my options?
It's not an array—it's an object with string keys and values of type
MyColorClass.What you can do, is turn it into an array by getting an array of the object's keys then mapping the keys to the properties of the object:
Since you might do this a lot, you could create a reusable function to turn the properties into an array:
Then you use it like so:
Side note: You may just want to store this cached on a static property of
MyClass.Object.values
Alternatively, you could also use
Object.values():But you might need to add a polyfill if you use that.