Библиотеки контрактов кода JavaScript?

Я только запускаю новое веб-приложение и хочу реализовать некоторую форму проверки стиля контракта в моем JavaScript. Я быстро погуглил и наткнулся на JsContact , но синтаксис не совсем то, что я имел в виду. Кто-нибудь знает о других библиотеках?

Я думаю, что хочу, чтобы синтаксис был чем-то вроде

String.prototype.padLeft = function(c, width) {
  Verify.value(c).isRequired().isNotNull().isChar();
  Verify.value(width).isRequired().isNotNull().isNumber().greaterThan(0);

  ...

  Verify.value(result).isNotNull();

  return result;
};

Хотя мне не понадобится много времени, чтобы собрать мою собственную библиотеку с синтаксисом / методами, которые я хочу, если у кого-то есть уже проделал работу, и это достаточно близко, это сэкономит мне время. Заранее спасибо.

ОБНОВЛЕНИЕ

У меня не будет времени поработать над этим до сегодняшнего дня, поэтому я дам ему еще несколько часов, чтобы посмотреть, есть ли у кого-нибудь рекомендации. Если не, Я опубликую все, что я создам где-нибудь в качестве ответа ниже, чтобы другие люди могли ссылаться, если они того пожелают.

Я также немного больше подумал об API, который имел бы смысл, и в настоящее время я думаю что-то вроде (надуманные примеры ):

 function searchUser(firstName, middleInit, lastName) {
   Verify.value(firstName).isString().matching(/\w+/);       // Must have value
   Verify.value(middleInit).whenNotNull().isChar();          // May be null, but not undefined
   Verify.value(lastName).isString().withMinimumLengthOf(2); // Must have value

   ...
 }

 function syncTime(serverTime, now) {
   Verify.value(serverTime).isDate();         // Must have value.
   Verify.value(now).whenDefined().isDate();  // May be undefined, but not null.

 }

Моя текущая мысль заключается в том, что допускать значения NULL или UNDEFINED нетипично (по крайней мере для меня?), Как таковые, вместо того, чтобы явно указывать, что значение .isNotNull () вы бы фактически отключили правило для .whenDefined () или .whenNotNull (), как показано выше. Я могу сделать .whenNotNull () not ошибкой для UNDEFINED, но я вижу NULL и UNDEFINED как важное различие; посмотрим ... все остальные методы будут довольно типичными ... мысли? комментарии?

14
задан Chris Baxter 15 December 2010 в 14:27
поделиться