Разбор
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.