1) Как сводить к типу(cast) в TypeScript ?

 Следует использовать утверждение типа(type assertion)
let array: any = [1,2,3,4,5];
let arrayLength: number = (<Array[]>array).length;

//или

let array: any = [1,2,3,4,5];
let strLength: number = (array as Array[]).length;

Оба варианта эквивалентны, однако, если вы используете typescript в JSX ключевое слово as более удобно.

2)  Как проверить тип объекта ?

Используя JavaScript  оператор instanceof:
class Animal{
  private name:string;
}
let bird=new Animal();
console.log(bird instanceof Animal)// true

3) Как установить TypeScript ?

Typescript доступен в менеджерах пакетов  NPM и Yarn
npm install -g typescript

4) Как скомпилировать один файл ?
//helo.ts
console.log('Hello world!')
$  tsc hello.ts

5) Как объявить массив ?

Массив является одним из базовых типов, чтобы объявить его нужно использовать такой синтаксис: 
let array: number[] = [1, 2, 3];
interface Person{
  name:string;
}
let employees:Array<Person>=[{name:'John Doe'}] //declaring array of objects

6) Как проверить, является ли переменная undefined и/или null?

Самый простой способ - использовать оператор (something == null). Возвращает true, если что-то равно null или undefined. Также  можно использовать оператор отрицание.
let obj:any={};
let nullValue:any=null;
let undefinedValue=obj.someProp;
console.log(nullValue==null)//true
console.log(undefinedValue==null)//true

if(!nullValue || !undefinedValue){
  console.log(true)
}

7) Как создать тип перечисление в TypeScript?

Используя ключевое слова enum. Тело перечисления может состоять из нуля или многих элементов. Каждый элемент имеет имя и значение. Значение может быть объявлено как константа или вычислено.
enum Status {
    New=1,
    Pending,
    InProgress,
    Done
}
console.log(Status.Pending)//2

8) Как перезагрузить метод базового класса ?
 
Просто реализуйте необходимый метод в производном классе. Метод в базовом классе должен иметь  public или protected. модификатор
class Shape{
  public paint(){
    throw new Error("Abstract method execution.")
  }
}
class Square  extends Shape{
  private height:number;
  constructor (height:number){
    super();
    this.height=height;
  }
  paint(){
    console.log('|Square|')
  }
}
let obj:Shape=new Square(5);
obj.paint(); // |Square| 

9) Как вести отладку(debug) TypeScript?

Нет рекомендуемого способа сделать это. Наиболее популярным является использование библиотеки ts-node, которая дает вам возможность загружать *.ts файлы непосредственно в файл JavaScript или запустить файл ts. Также с помощью протокола V8 Inspector мы можем отлаживать Node.js приложение непосредственно в Chrome, используя мощные  Chrome devtools.
require('ts-node').register();
require('./MyAwesomeClass');

$ ts-node script.ts

10) Как импортировать модуль?

Любой файл, содержащий ключевое слово import/export, считается модулем. Существует два типа экспорта: default и named. Для импорта экспорта по умолчанию напишите: import * as Module from './SomeModule'. Для именованного  импорта export-import {SomeFunc} from './SomeModule'.
export default class MyClass{
  someProp:any;
  someMethod(){
  }
}
//Module B
import MyClass from './ModuleA'
import * as moment from "moment";

11) Как именовать интерфейсы?

Согласно официальным рекомендациям по кодированию, для имен типов следует использовать PascalCase. Также не используйте префикс "I"в именах интерфейсов. Для реализации интерфейса можно добавить суффикс Impl(что-то вроде WritableImpl)

12) Что такое union type?

Переменная должна быть объявлена с типом union, если она может быть установлена значениями различных типов. Это может быть полезно, когда вам нужно вернуть правильный результат или нулевое значение, например, в функции find.

13) Что такое декораторы и как их можно использовать?

Декоратор - это функция, которая позволяет добавлять аннотации и синтаксис мета программирования в объявление класса и функций-членов. Декоратор может быть присоединен к объявлению класса, объявлению свойства, методу, методам доступа get/set или параметру. Синтаксис очень прост, похож на аннотации Java.
@Entity
export default class MyClass{
  @Prop("primaryKey")
  private id:number;
}

14) Как получить доступ к методам и свойтсвам суперкласса?
Для вызова конструктора базового класса просто запустите super (). Для вызова метода базового класса используйте следующий синтаксис:
class Abstract{
  public method(){
  }
}
class Concrete  extends Abstract{
  paint(){
    super.method();
  }
}

15) Как использовать forEach и for..в TypeScript?

Нет никакой разницы между тем, как использовать в JavaScript, за исключением того, что вы можете указать тип для елемента массива . Также будет ошибка компилятора при попытке запустить метод forEach для объекта или строки.
let notArray='dsd';
notArray.forEach(e=>{}) // Compilation error - Unresolved function forEach
let array:number[]=[1,2,3];
array.forEach(e=>e.toExponential(2)) // Compiler knows that has number type 

16) Какие модификаторы доступа существуют в  TypeScript?

Существует три типа: public,private,protected. По умолчанию все свойства и методы класса являются открытыми, но лучше добавить это явно, чтобы сделать код более читаемым.
 Используйте protected  модификатор, если вы хотите предоставить доступ ко всем классам потомков, это полезно в сложной конструкции ООП. 
Наконец, используйте private для инкапсуляции деталей для реализации, это помогает защитить клиента класса от его внутренних изменений структуры. Обратите внимание, что все эти проверки доступа будут работать только во время компиляции, потому что JS не поддерживает модификаторы доступа.

17) Что такое утиная типизация (duck typing) ?

Утиная типизация считает, что два объекта имеют одинаковый тип, если они имеют одинаковый набор свойств. Объявление объекта литералом равно созданию объекта с помощью оператора new.

18) Что такое дженерики(generics) ? Как их использовать?

Generic-это некоторый обобщенный тип, который может быть заменен любым конкретным типом, таким как string или number. Универсальные шаблоны позволяют писать универсальные функции, с сохранностью типа, без использования "любого" типа. Существуют универсальные функции, классы или интерфейсы, например, можно написать класс Container<T>, который реализует базовые операции сбора, независимо от типа хранимых элементов.
function loggingObject<T>(arg: T): T {
     console.log(arg.toString());
     return arg;
}

19) Как использовать пространства имен с модулями TypeScript?

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

20) Как передать параметры компилятору TypeScript?

Через аргументы командной строки или tsconfig.json-файл. Если файл tsconfig.json, расположенный в некотором каталоге, это означает, что это корень проекта TypeScript. Есть такие варианты: компилятора параметры,файлы,typeRoots, включать, исключать.

21) Есть какой-то способ автоматически перекомпилировать проект, если какой-то файл изменился?

Да, выполните команду tsc с аргументом -w, также передайте опцию --no-initial-compiler, если вы хотите только компилировать после изменений, но без первоначальной компиляции.

22) Как использовать JSX в проекте TS?

Чтобы использовать JSX, сохраните код в файлах с  расширение  *.jsx и включите опцию jsx в tsconfig.json. Существует три режима JSX react, preserve, react-native.