Tengo una definición de clase de TypeScript que comienza así;
module Entities {
export class Person {
private _name: string;
private _possessions: Thing[];
private _mostPrecious: Thing;
constructor (name: string) {
this._name = name;
this._possessions = new Thing[100];
}
Parece que una matriz de tipo Thing no se traduce correctamente al tipo de matriz de Javascript correspondiente. Este es un fragmento del JavaScript generado:
function Person(name) {
this._name = name;
this._possessions = new Entities.Thing[100]();
}
Al ejecutar un código que contiene un objeto Person, lanza una excepción al intentar inicializar el campo _possession:
El error es "0x800a138f - Error de tiempo de ejecución de Microsoft JScript: no se puede obtener el valor de la propiedad '100': el objeto es nulo o no está definido".
Si cambio el tipo de _possession any[] ay inicializo _possession con new Array()excepción, no se lanza. ¿Me he perdido algo?
fuente

private _possessions: Thing[] : [];en la definición de clase?Puedes probar cualquiera de estos. No me están dando errores.
También es el método sugerido de mecanografiado para la declaración de matrices .
Al usarlo
Array<Thing>, está haciendo uso de los genéricos en mecanografiado. Es similar a pedir unList<T>código en c #.o
fuente
new Array<Thing>(100).La traducción es correcta, el tipo de expresión no lo es. TypeScript está escribiendo incorrectamente la expresión
new Thing[100]como una matriz. Debería ser un error indexarThing, una función constructora, usando el operador de índice. En C #, esto asignaría una matriz de 100 elementos. En JavaScript, esto llama al valor en el índice 100Thingcomo si fuera un constructor. Dado que ese valor esundefined, plantea el error que mencionaste. En JavaScript y TypeScript lo que desea esnew Array(100).Debería informar esto como un error en CodePlex.
fuente