Название фичи: Контекстный тип

Описание:
Контекстная типизация происходит, когда о типе выражения можно сделать догадку на основании его положения.

Аналог в c# / js: тип принимаемого параметра в с#

Решаемая проблема:
Ошибка при обращении к полю передаваемого в функцию объекта.

Пример возникновения:

Функция принимает не типизированный параметр, например объект, при этом внутри функции происходит попытка обращения к конкретному полю данного объекта.

Пример проблемы в JavaScript:

var x;
x = function(s) {
    return s.toUpperCase();  // Компиляция прошла успешно
}

console.log(x(10));          // Падает в runtime: toUpperCase is not a function

Пример решения на TypeScript:

var x: (number) => number;

x = function(s) {
    return s.toUpperCase(); // Выведет ошибку во время компиляции
}

...

Как решить проблему:
Если выражение, тип которого был выведен из контекста, содержит явное указание типа, то выведенный контекстный тип игнорируется. Явно указанный тип параметра в функциональном выражении будет иметь приоритет над контекстным типом.

Синтаксис:

var x: (number) => number;

Перекомпилированный в JS код:

var x;

results matching ""

    No results matching ""