TypeScript: интерфейс против класса против модулей против программы против функции

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

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

Interface Class Modules Programs Functions. Declare vs. var

Может ли кто-нибудь кратко помочь понять, какой из вышеперечисленных следует использовать, когда? Интерфейс и класс совпадают с версией C #?