Вы можете использовать типы, например, с librar y, чтобы получить статическую проверку времени компиляции. Конечно, не очень полезно для ввода пользователем.
// @flow
function acceptsNumber(value: number) {
// ...
}
acceptsNumber(42); // Works!
acceptsNumber(3.14); // Works!
acceptsNumber(NaN); // Works!
acceptsNumber(Infinity); // Works!
acceptsNumber("foo"); // Error!