Разбор

TypeScript может помочь тебе в проверке простых файлов JavaScript, с помощью комментария // @ts-check. Также можно улучшить работу, добавив надлежащие JSDocs для описания функций, которые будут указывать информацию о типе в TypeScript.

Если мы создадим обычный файл JavaScript index.js и напишем в нём какую-то функцию - то заставить TypeScript проверить этот файл сможем, добавив // @ts-check.

// @ts-check

function greet() {
  return 1;
}

greet('Hello');

В данном случае мы получим ошибку: Expected 0 arguments, but got 1.

Также, с помощью JSDoc, мы можем добавить документацию для описания типа функции. Это можно сделать через /** */. VS Code автоматически сгенерирует звёздочку в каждой строке, при нажатии клавиши enter. Мы укажем что функция возвращает строку @return {string}.

// @ts-check
/**
 * @return {string}
*/

function greet(greeting) {
  return 2;
}
greet('Hello');

Получаем ошибку: Type '2' is not assignable to type 'string'. Для того чтобы её исправить, вернём вместо цифры параметр greeting. Тип у greeting строка, но при наведении на неё мы получаем greeting: any.

Для исправления добавляем в JSDoc @param, указывая тип и имя параметра.

// @ts-check
/**
 * @param {string} greeting
 * @return {string}
*/

function greet(greeting) {
  return greeting;
}
greet('Hello');

Если передать число в greet(1) — получим ошибку Argument of type '1' is not assignable to parameter of type 'string'. При наведении курсора на функцию редактор показывает подробную подсказку о типах, несмотря на то что они объявлены в JSDoc, а не встроены в саму функцию.

В JSDoc есть намного больше вариантов. Чем полнее документируешь JavaScript с его помощью, тем ближе получаешь опыт работы с полноценным TypeScript.