Функции перегрузки Javascript обнаруживаются с помощью визуального кода студии intellisense - PullRequest
0 голосов
/ 28 апреля 2018

Как написать функцию перегрузки JavaScript, которая может быть обнаружена с помощью Visual Studio IntelliSense, а также как ее документировать.

Например, функция jasmine's it () показана ниже.

функция it (ожидание: строка, утверждение ?: (сделано: DoneFn) => void, timeout ?: число): void (+ 1 перегрузка)

1 Ответ

0 голосов
/ 28 апреля 2018

Жасмин на самом деле не имеет двух определенных методов (один перегружает другой). Причина, по которой вы видите это в вашей среде IDE, заключается в том, что в файле для набора текста есть две версии, объявленные для различного использования. Например, вот как старая версия DefinitiveTyped настроила функцию it():

// Type definitions for Jasmine 1.3
// ...

declare function it(expectation: string, assertion: () => void): void;
declare function it(expectation: string, assertion: (done: (err?: any) => void) => void): void;

Для справки, вот соответствующий код в этой версии Jasmine, чтобы показать, что есть только одна функция, обрабатывающая эти два варианта использования:

base.js (строки 485-501)

/**
 * Creates a Jasmine spec that will be added to the current suite.
 *
 * // TODO: pending tests
 *
 * @example
 * it('should be true', function() {
 *   expect(true).toEqual(true);
 * });
 *
 * @param {String} desc description of this specification
 * @param {Function} func defines the preconditions and expectations of the spec
 */
var it = function(desc, func) {
  return jasmine.getEnv().it(desc, func);
};
if (isCommonJS) exports.it = it;

Env.js (строки 151-161)

jasmine.Env.prototype.it = function(description, func) {
  var spec = new jasmine.Spec(this, this.currentSuite, description);
  this.currentSuite.add(spec);
  this.currentSpec = spec;

  if (func) {
    spec.runs(func);
  }

  return spec;
};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...