Я использую Closure Compiler в течение некоторого времени, и я был интересно, если есть какой-то двигатель, чтобы сделать во время выполнения проверок типов данных типа выполнения.Javascript проверка двигателя
Факт типов позволяет людям делать меньше ошибок. Например, в Haskell
, скажем Int
, любой тип данных должен иметь значение, вы просто не можете указать null
или undefined
, если это не разрешено. В любом случае вы можете указать обертку, такую как Maybe Int
, чтобы сделать ее nullable. Это означает, что значение равно null или нет, и если оно не является нулевым, вы можете извлечь значение. Но сначала вы должны проверить, является ли оно нулевым, и нет возможности сначала получить доступ к значению.
Закрытие компилятора делает довольно хорошую работу, проверяя типы данных статически. Некоторые вещи отсутствуют, например, более сильные null/undefined валидации. Другие вещи, которые уходят от Closure Compiler: проверки типов с данными, загруженными с сервера. Даже если вы доверяете своему серверу, технические характеристики меняются, и ваш код тоже. Тесты могут проверять подобные несоответствия, но было бы лучше, если бы эти проверки могли происходить непосредственно в коде. Они могут даже регистрировать найденные ошибки при попытке сопоставить тип.
Следующий код является минималистский пример ответа сервера:
/**
* Server result data types
* @param {T} t [description]
* @template T
*/
ServerResult = {
/**
* Result code from server
* @type {Number}
*/
code: 0,
/**
* Result data from server
* @type {T}
*/
data: null,
/**
* Message of the server in case something didn't go as expected
* @type {String}
*/
message: ''
};
Result.data
может быть даже другой тип данных (запись, к примеру). Прямо сейчас, что я делаю, это рекурсивно проверьте тип , содержащийся в экземпляре по умолчанию и сравните его с загруженной версией.
- Есть ли лучший способ сделать это?
- Есть ли библиотека, которую я мог бы использовать вместо переписывания колеса?
- Это вздор?