Рантайпер это плагин для Вавилон , который выполняет проверку типов непосредственно во время выполнения кода JavaScript. Он обнаруживает неправильные операции, такие как строгое сравнение строки и числа, и выдает предупреждение на консоль.
Это позволяет вам находить ошибки ввода на ранней стадии, не требуя дополнительных аннотаций кода.
Что именно мы находим?
В настоящее время типы проверяются на предмет строгих сравнений и арифметических операций.То есть, если в коде произойдет одна из следующих ситуаций, вы увидите предупреждение:
JavaScript молча «проглатывает» такие операции, хотя в большинстве случаев это опечатка, невнимательность или просто ошибка.1 === "1" // Strict compare of different types: 1 (number) === "1" (string) [1, 2] + true // Numeric operation with non-numeric value: "[1,2]" (object) + true (boolean) 42 * null // Numeric operation with non-numeric value: 42 (number) * null .
Как это работает
Под капотом Runtyper использует данные AST-деревья , предоставлено Babel. Плагин объединяет операторы сравнения и арифметики в функцию, которая дополнительно проверяет типы аргументов.
Например, это было: if (x === y) { .
}
Стало (упрощенно): if (strictEqual(x, y)) { .
}
function strictEqual(a, b) {
if (typeof a !== typeof b) {
console.warn('Strict compare of different types: ' + (typeof a) + ' === ' + (typeof b));
}
return a === b;
}
О статическом анализе
Анализ типов во время выполнения не исключает статический анализ, например, с использованием Поток .Скорее, он дополняет его, находя те ошибки, которые сложно обнаружить статически.
Например, данные, поступающие в пользовательских событиях или из внешних библиотек, для которых еще нет аннотаций типов.
Вот пример из документации, где статический анализ не находит ошибку, но Runtyper выдает предупреждение при выполнении кода: function square(n) {
return n * n; // Numeric operation with non-numeric value: "Vasya" (string) * "Vasya" (string)
}
window.document.getElementById('username').
addEventListener('change', function (event) {
square(event.target.value);
});
Конечно, недостатком проверки во время выполнения является то, что сама проверка происходит только при выполнении определенной строки кода.
Если строка ни разу не выполнялась, то проверки не будет. Поэтому самое правильное — включить плагин в сборку разработки и в промежуточную сборку, на которой вы запускаете тесты.
Но несомненный плюс в том, что вам не нужно писать аннотации :) Вы просто подключаете плагин и получаете в консоли предупреждения об ошибках.
Подведем итог
Вы можете легко добавить в свой проект дополнительную проверку типов во время выполнения.Это позволит вам выявить еще несколько ошибок перед началом производства.
Работает в браузере и в Node.js и не требует аннотаций кода.
Документация и примеры использования доступны по адресу GitHub .
Теги: #JavaScript #node.js #проверка типа #подсказка типа #анализ кода во время выполнения #babel #Flow #typescript #разработка веб-сайтов #открытый исходный код #JavaScript #node.js #typescript
-
[Видео] Корабельный Пожарный Робот Саффир
19 Oct, 24 -
Поиск Вредоносного Кода Голыми Руками
19 Oct, 24 -
1024-Битное Шифрование Rsa Сломано.
19 Oct, 24