Подтвердить что ты не робот

TypeScript - модуль undefined во время выполнения

Я не понимаю, что я делаю неправильно. Я создал проект TypeScript в VS2012 и создал файл с именем "Vector.ts" в подкаталоге "Физика":

// Module
module Physics {

    // Class
    export class Vector {
        constructor(public x: number) { }
    }

}

Кроме того, у меня есть следующий файл app.ts:

/// <reference path="Physics/Vector.ts" />

window.onload = () => {
    var vector = new Physics.Vector(6);
};

Проект успешно скомпилирован, но когда я его запускаю, я получаю следующее исключение:

0x800a1391 - Ошибка выполнения JavaScript: "Физика" undefined

Я не понимаю, что я делаю неправильно...

Спасибо.

4b9b3361

Ответ 1

Если вы используете модули стиля AMD с загрузчиком модуля, например Require.Js, вам нужна инструкция import. См. Стив принял ответ здесь: fooobar.com/questions/486699/... Ваш код будет выглядеть примерно так:

import Physics = module("Physics/Vector");

var vector = new Physics.Vector(6);

... и вам это не понадобится: /// <reference path="Physics/Vector.ts" />

Если вы не используете загрузчик модуля, вам просто нужно убедиться, что вы добавили выходной файл Vector.js где-то на странице html и убедитесь, что он загружается до вашего файла приложения. В этом случае вы используете /// <reference path="Physics/Vector.ts" />, чтобы сообщить TS, где можно найти ваш модуль для intellisense и т.д.

Ответ 2

Просто для полноты, если вы используете System, вы должны использовать import function:

System.import("Physics/Vector");

Если вы делаете это для Angular 2, тогда вы захотите сделать это до своего bootstrap import