Когда использовать классы против модулей в TypeScript?

Я в процессе превращения большого количества кода в Typescript, но хотел получить хороший контроль, когда & где я должен использовать определенные вещи.

Прямо сейчас у меня есть несколько больших пространств имен в модулях:

(function (nameSpace) {

    var privateVariables = '';

    function privateFunctions () { }        

    // Public methods
    nameSpace.someMethodHere = function () { };

}(window.nameSpace = window.nameSpace || {}));

Мой вопрос вМашинопись, есть ли разница / польза во мне, просто превращая их в просто классы? Или это должен быть один большой Модуль с классами (каждым методом) внутри?

module nameSpace {

    export class someMethodHere {
       // etc
    }

    // more classes (my methods) here ??
}

-ИЛИ ЖЕ-

class nameSpace {

    someMethodHere () {
        // code
    }
    // more prototyped methods here
}   

Или я должен настроить их так же, как сейчас? Я пытался, и он продолжал давать мне ошибки, не уверен, как я делаюnameSpace.someMethodHere внутри модуля без класса!

Ответы на вопрос(2)

Решение Вопроса

Это зависит. Модуль должен быть дискретным наборомвещи" а не просто беспорядочная коллекция разрозненных классов, поэтому, если вещи кажутся принадлежащими друг другу, используйте модуль для их группировки.

Я полагаю, что команда TypeScript ждет, чтобы увидеть, как люди используют язык, прежде чем публиковать руководство, но я предполагаю, что люди опубликуют модуль, в котором они в настоящее время публикуют скрипт - поэтому jQuery будет модулем, каждый плагин jQuery будет модулем, Фреймворк тестирования будет модулем, а AOP - модулем, например.

 Mark Pieszak - Trilon.io06 нояб. 2012 г., 22:30
Я имею в виду после нескольких лет JS, этотрудно не быть ... Этотак здорово видеть, что он, наконец, становится более реальным языком, а не обычным "вперёд и набери всё что хочешь Javascript хаха
 Ryan Cavanaugh06 нояб. 2012 г., 19:33
В качестве основы, если вы собираетесь иметь несколько экземпляров чего-либо с данными, связанными с каждым экземпляром,class это путь Если ты'просто группировать логически связанные наборы функций без сохранения состояния,module более уместно.
 Mark Pieszak - Trilon.io06 нояб. 2012 г., 18:59
Договорились, ну все они скорее связаны. Я думаю, теперь, когда я думаю об этом, яИнтересно ... имеет ли смысл иметь все внутри класса (все методы, которые создаются прототипом) или модуль? Мне нравится, как модуль по крайней мере недолжен быть создан
 Fenton06 нояб. 2012 г., 19:44
Я на 100% согласен с @RyanCavanaugh на этот счет.
 Mark Pieszak - Trilon.io06 нояб. 2012 г., 22:25
Большой! Я'Определенно придется учитывать, какие вещи не имеют состояния или нет при реализации всего этого. На данный момент все еще выполняется обновление / подключение большого количества кода (множество разработчиков с разными стилями), прежде чем сделать большой переход на Typescript. Возбужденный, хотя.
 Fenton06 нояб. 2012 г., 22:26
@mcpDESIGNS это 'хорошо найти других людей, столь же взволнованных, как и я, о TypeScript :)
 Nikos14 дек. 2012 г., 14:56
Я думаю, что я просто сгруппирую все модули в один большой файл, мне не нравится играть с этим require js, так как он плохо интегрирован в VS 2012
 John Papa19 дек. 2012 г., 02:45
Я продолжаю изучать класс и модуль, когда хочу синглтон. Модуль облегчает раскрытие общих функций в одноэлементном режиме, что аналогично тому, что мы получаем с модулем и IIFE в JavaScript. Класс имеет много дополнительных функций, но затрудняет создание частных участников. Я'В настоящее время я делаю обе техники в моем курсе TypeScript, и у них обоих есть свои плюсы и минусы. Но в настоящее время я думаю, что методика модуля может быть мне больше по душе.
Рассмотрите возможность использования модуля в качестве хорошего варианта дляодиночка (один статический объект, доступный везде), где обычно используются библиотеки.Подумайте об использовании класса, когда вам нужно создать несколько экземпляров этого класса или если вы планируете расширить этот класс.

В основном модули хороши для упаковки всего вашего кода в один удобный глобальный объект, в то время как классы удобны для структурирования вашего кода и представления данных.

Ваш ответ на вопрос