TypeScript 1.5: Контекстная типизация (Contextual Typing)

Как правило, определение типа TypeScript делается “снизу вверх”: от дочерних элементов дерева выражений к его корню. В следующем примере TypeScript определяет, что возвращаемый тип функции ‘mul’ должен быть ‘number’, путем получения информации о типе снизу вверх в возвращаемом выражении. Т.е. сначала будет определен тип выражения a * b, и затем это значение будет передано вверх к корню дерева выражений, коим является возвращаемое функцией значение (result).

var result = function mul(a: number, b: number) { 
return a * b;
}

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

Однако, в некоторых случаях, вывод типа выражения осуществляется ‘сверху вниз’, из контекста выражения. Это называется контекстной типизацией. Говоря более простым языком, TypeScript определяет тип выражения из типов его аргументов.

var result = (a: number, b: number) => number;
result = function(a, b) {
return a * b;
}

Контекстная типизация предоставляет информацию о выражении, функции или объекте, что позволяет программистам использовать его правильно.

One clap, two clap, three clap, forty?

By clapping more or less, you can signal to us which stories really stand out.