Проблема на самом деле не в машинописи, а в том, как вы относитесь к своему классу.Вы должны вручную присвоить пустой массив вашему свойству name, поэтому вместо
class FileSystemStatistics{
public number: number;
public name: string[];
public size: number;
public used: number;
public usedPercent: number;
public physicalLocation: string;
}
должно быть не менее
class FileSystemStatistics{
public number: number;
public name: string[] = [];
public size: number;
public used: number;
public usedPercent: number;
public physicalLocation: string;
}
То, что вы сделали с выражением public name: string[]
, это то, что вы толькоотметьте, что свойство name должно быть массивом (или неопределенным / недействительным), но не массивом с числами, например
...
public name: string[] = [1,2,3]; // would gave an error
Попробуйте проверить, какой код будет у вас во время выполнения на детской площадке https://www.typescriptlang.org/play/index.html
Обрабатывать машинописный текст как расширенный набор javascript, который существует только перед компиляцией и генерировать javascript.С точки зрения кода времени выполнения, который вы на самом деле тестировали и который дал вам ошибку в вашем посте - у вас была простая функция конструктора, которая генерирует пустой объект
, и вы пытались достичь - использовать свойпустой объект с именем fsObject
в таком выражении
fsObject; // {}
fsObject.name // which is already undefined
fsObject.name[0] // this is where you get runtime error with undefined treated as array