Here is my type of interest - an array with properties.
type MyArray = string[];
interface MyArrayWithProperties extends MyArray {
someProperty: boolean
}
This is the only way I've been able to assign the type.
let arr : any = ['a','b', 'c']; //must declare array as any
arr.someProperty = true //then add the property
const arrWProps = arr as MyArrayWithProperties; //then cast as type
Is a better way? Usually I don't need to build variables in steps as any before setting the real type.
CodePudding user response:
Object.assign can be used to create an array literal and assign a value to it all at once before finally putting it into the variable on the left (with the right type).
const arr: MyArrayWithProperties = Object.assign(['a','b', 'c'], { someProperty: true });
That said, I'd usually recommend not putting arbitrary key-value pairs onto arrays like this - programmers will generally expect an array to contain only properties that arrays usually have (numeric indicies, .length, and array methods). There aren't any rules against it, but you might consider if there are other ways you might structure the code to get the same effect.
