Еще один блог :)

Вопросы по TS*

  1. Что такое TypeScript
  2. В чем состоят различия с JavaScript
  3. Особенности TS
  4. Преимущества TS
  5. О поддержке TS
  6. Основные типы данных TS
  7. Интерфейсы
  8. Как компилировать
  9. Классы
  10. Поддержка модулей
  11. Компиляция нескольких файлов в один
  12. Вызов конструктора базового класса
  13. Что такое замыкания
  14. Области видимости
  15. Что такое модули
  16. Пространства имен
  17. Что такое декоратор
  18. Что такое примесь
  19. Область видимости по умолчанию в классе

1.  TS - бесплатный язык программирования с открытым исходным кодом, спроектированный Андерсом Хейльсбергом (создателем C# и Delphi) и поддерживаемый компанией Microsoft как надмножество над JS с целью привнести классы, интерфейсы, строгую  статическую типизацию для разработки сложных и больших проектов. При этом TS компилируется в обычный JS, который можно выполнить в любом браузере. Это позволяет писать кроссбраузерные клиентские приложения с высокой производительностью за счет использования утилит и методик проектирования, таких как статическая типизация и рефакторинг. Различия между TS и JS следующие

а) JS не полностью поддерживает последние спецификации Ecma

б) JS использует прототипное наследование и предлагает функциональную парадигму, а TS позволяет перейти к ООП

в) JS не поддерживает интерфейсы, а TS позволяет полагаться на них

г) В JS нет статической типизации, в TS она есть

д) JS не поддерживает необязательные параметры, TS их поддерживает

Преимущества TS:

а) компилируется во все основные версии JS (ES3, ES5-ES7),
б) может использоваться как кроссбраузерное решение

в) привносит статический контроль типов

г) позволяет избежать трудностей при разработке сложных больших приложений приемами ООП

д) Язык стабильно развивается в 2012 года и обрастает новыми возможностями

Преимущества над JS

- отличное автодополнение и умный ввод

- компилируется в кроссбраузерный код

- больше возможностей

- проще в отладке

- приемы ООП

- модули и пространства имен

Установка проводится глобально с помощью npm

$ npm install -g typescript

Компилятор доступен как утилита командной строки tsc

Основные типы данных

1) number - число (вещественное, двойной точности)

var x : number

2) string - строка Unicode UTF16

var s : string;

3) bool - логический тип (true/false)

var b : bool;

4) null - нулевой литерал

var x : number = null;

5) undefined - неопределенный литерал как встроенный подтип любого типа

var x : number = undefined;

 

Интерфейс - это сигнатура синтаксиса сущности, которая определяет обязательство класса реализовать свойства, события и методы у себя. Интерфейс можно рассматривать  как объявление членов без их реализации. Класс обязуется наполнить интерфейс конкретным содержанием при наследовании. Для объявления интерфейса исп-ся ключевое слово interface. Интерфейсы не конвертируются в код JS. Также интерфейс  может определять набор ключей и типы их значений у массива

О компиляции

Можно компилировать в AppBuilder или c помощью tsc

Класс это шаблон для создания объектов. Объект инкапсулирует в себе данные и методы, которые эти данные преобразовывают. Для объявления класса исп-ся кл.слово class. Инкапсуляция - это единство данных и методов, их привязка к конкретному экземпляру класса. Наследование - это переиспользование кода базового класса в классах потомках. Полиморфизм это возможность в дочерних классах по разному конкретизировать унаследованный метод базового класса. Например, дочерние классы Circle (окружность) и Rectangle (прямоугольник) выводятся из базового класса Figure и по-разному реализуют метод Draw. С другой стороны, они разделяют интерфейс, что гарантирует вне зависимости от типа возможность вызова метода согласно интерфейсу (абстрагирование)

Модули не поддерживаются средствами самого JS совсем или недостаточно в различных браузерах.  Чтобы создать модули и поддерживать их необходимо стороннее решение вроде CommonJS

Чтобы скомпилировать несколько файлов ts в один

 tsc --outFile app.js ts1.js ts2.js

Как вызвать конструктор базового класса - исп-ть функцию super()

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

Области видимости - глобальная, локальная. В новых версиях - блочная

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

module myUnit {

 export class SomeClass(){}

}

Пространства - это способ группировки классов или интерфейсов

namespace mySpace {

 export classA(){}

 export classB(){}

}

Декораторы позволяют использовать приемы метапрограммирования при объявлении классов и их членов.

tsc --targe ES5 --experimentalDecorators

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

По умолчанию, область видимости public (доступ и сторонним классам и наследникам)

Опубликовано в категории Вопросы и ответы к собеседования

×