Как документировать метод, который может возвращать различные типы объектов? - PullRequest
0 голосов
/ 24 марта 2020

У меня есть 3 JavaScript классы, представляющие автомобили, один из них работает как фабричный класс (представляет базовый автомобиль c), он содержит метод "Автомобиль", который возвращает новый объект автомобиля в зависимости от типа автомобиля. был передан на конструктор. Я использую код Visual Studio, поэтому все автозаполнение и другие подсказки зависят от документации кода.

CarFactory.js:

const FastCar = require('./FastCar.js');
const FamilyCar = require('./FamilyCar.js');

/**
 * Class for Car Factory
 * @class
 */
class CarFactory {
  /**
   * Fabricates a car.
   * @param {string} type - Choose which type of car you would like to construct (Race or Family) 
   */
  constructor(type) {
    this.type = type;
  }

  /**
   * Returns a fabricated car
   * @return {RaceCar | FamilyCar} <-- HERE IS THE PART I DON'T KNOW HOW TO DOCUMENT FOR A SWITCH CONDITIONAL
   */
  get Car() {
    switch (this.type) {
      case 'Race':
        return new RaceCar();
      case 'Family':
        return new FamilyCar();
    }
  }
};

module.exports = CarFactory;

Когда я использую класс CarFactory для создания «Семейного автомобиля» "Я получаю автозаполнение от всех методов и свойств класса FastCar.

index.js:

const CarFactory = require('./CarFactory.js');
const myCar = new CarFactory("Family");
myCar.... //<-- Auto completion will recognize it as a Family car and as a Fast car

Очевидно, что использование | не для условий, но есть обходной путь? Я проверил документацию и не нашел решения, чтобы заставить его работать с Visual Code.

...