JsDocs: как использовать `@ type` в методах класса - PullRequest
1 голос
/ 06 августа 2020

Я реорганизовал некоторый код, чтобы использовать класс, а не статический c объект. И я обнаружил, что все мои jsDocs ломаются.

Я хотел бы пометить методы класса типами так же, как я помечаю функции внутри объектов. Потому что копирование одного и того же 6-строчного блока в начало каждого метода, а не 1-строчного, весьма подвержено ошибкам. Почти все методы / функции в этом классе имеют одинаковую сигнатуру. Я не знаю, как заставить его повторно использовать один @type декоратор.

import { Request, Response, Handler } from "express";

const WorkingController = {
  /**
   * 
   * @param {Request} request 
   * @param {Response} response 
   * @param {Handler} next 
   */
  async getAll(request, response, next) {
    // intellisense works
  },

  /**@type {Handler}*/
  async get(request, response, next) {
    // intellisense works
    // and it's much slimmer
  }
}

class ControllerClass {
  /**@type {Handler}*/
  async getAll(request, response, next) {
    // !!!no intellisense!!!
  }

  /**
   * 
   * @param {Request} request 
   * @param {Response} response 
   * @param {Handler} next 
   */
  async get(request, response, next) {
    // intellisense works
  }

enter image description here enter image description here введите описание изображения здесь

Для справки, я использую vsCode версии 1.47.1 без каких-либо расширений jsdo c -specifi c.

...