TypeScript: интерфейс vs Class vs Modules vs Program vs Function

Я прочитал спецификацию TypeScript, расположенную по адресу: http://www.typescriptlang.org/Content/TypeScript%20Language%20Specification.pdf

Однако это меня путало со следующим:

  • Интерфейс
  • Класс
  • Модули
  • Программы
  • Функция.
  • Объявить vs var

Может кто-то кратко поможет понять, какой из них следует использовать, когда? Является ли интерфейс и класс такими же, как версия С#?

Ответ 1

Я ответил, что эти ответы совпадают с С#, как вы упомянули в своем вопросе, но, надеюсь, ответы полезны для людей, приходящих на TypeScript из похожих языков.

Интерфейс

Интерфейс в TypeScript похож на интерфейс, который вы встретили на С#. Это контракт - если один из ваших классов реализует интерфейс, он promises имеет определенные свойства или методы, которые документы интерфейса.

В TypeScript интерфейс может наследовать от другого интерфейса, чтобы расширить его и из класса, чтобы захватить его реализацию.

Всякий раз, когда что-то кажется невозможным в TypeScript, вы обычно можете решить его с помощью интерфейса!

В TypeScript интерфейсы имеют широкий диапазон применений. Они описывают структуру, поэтому ее можно использовать везде, где вы используете тип (т.е. Не только для их реализации в классе, вы можете использовать их для ввода переменных, параметров, возвращаемых значений и т.д.).

Класс

Это очень похоже на концепцию класса в С#. Вы можете наследовать от других классов для расширения или специализации поведения.

Пространство имен

Более новое ключевое слово namespace используется для размещения группы кода в ограниченной области. Это похоже на пространства имен С#.

Модуль

Модули лучше, чем пространства имен, когда дело доходит до TypeScript. Модуль (ранее известный как внешний модуль) - это файл, который является автономным и ничего не добавляет к вашей глобальной области. Вы можете загружать модули в локальные переменные по мере необходимости. Модули обеспечивают хороший способ организации кода и загрузки деталей по требованию. При использовании модулей лучше избегать использования пространств имен. Модули лучше, чем пространства имен.

Программа

Программа представляет собой набор модулей, классов. Это, по сути, то, что вы написали, используя TypeScript.

Функция/метод

Классы содержат методы, и вы также можете писать автономные функции, не относящиеся к классу.

Объявить против var

var создает новую переменную. declare используется для указания TypeScript, что переменная была создана в другом месте. Если вы используете declare, в генерируемый JavaScript ничего не добавляется - это просто подсказка для компилятора.

Например, если вы используете внешний script, который определяет var externalModule, вы должны использовать declare var externalModule для подсказки компилятору TypeScript, который externalModule уже настроен.