From TypeScript 1.4 we can do nice stuff with types now, with help of feature called Union Types : https://github.com/Microsoft/TypeScript/wiki/What%27s-new-in-TypeScript#union-types which will let you do also this sweet stuff :
You can see this in action on this link :
http://www.typescriptlang.org/Playground
Sample snippet here :
module ArrPlayground {
export function fn() {
var arr: Array<boolean|string> = [];
arr[0] = "aaa";
arr[1] = false;
arr[2] = 987;
return arr;
}
}
Basically you can now limit types that could be used in Array (all only at compile time, same rules apply as for other type checking features of TypeScript).
Enjoy. Hope this helps.