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
, и говорим, что параметр функции строка - greeting
, и указываем имя параметра.
// @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 с помощью JSDoc, тем ближе мы можем приблизить его к почти стандартному взаимодействию с TypeScript.