Size: a a a

2021 October 12

VF

Valentin Fedyakov in FrontCoder
но лично у меня они пишутся слева, а не под кодом
источник

PD

Petya Danchuk in FrontCoder
не подскажете как можно описать структуру возвращаемого объекта в JsDoc?
начал писать доку к одному методу в классе
 /**
  * @function _formatSelector
  * @param {Object} format - описание
  * @param {String} title -  описание
  * @returns {Object} - не знаю как описать структуру
  */
 _formatSelector(format, title) {/*code*/}

метод возвращает объект и я хотел бы описать его структуру здесь @returns {Object} (структура). Это можно сделать?
источник

VF

Valentin Fedyakov in FrontCoder
ну смотри, в доке есть пример
/**
* User type definition
* @typedef {Object} User
* @property {string} email
* @property {string} [nickName]
*/

т.е. ты описываешь тип User с полями email и nickName. соответственно в твоем @returns будет возвращаться  {User}
источник

VF

Valentin Fedyakov in FrontCoder
еще момент, старайся примитивные типы данных описывать через нижний регистр
источник

VF

Valentin Fedyakov in FrontCoder
кроч, описание типов через jsdoc мало чем отличается от TS. разве что отсутствием удобных утилит работы с типами
источник

VF

Valentin Fedyakov in FrontCoder
в @typedef ты именно описываешь те самые типы которые далее будешь использовать по приложению
источник

VF

Valentin Fedyakov in FrontCoder
этот же кусок на TS можно переписать как

type User = {
 email: string;
 nickName?: string;
}
источник

PD

Petya Danchuk in FrontCoder
я не знал что примитивы в нижнем нужно)) исправлю. спасибо
источник

VF

Valentin Fedyakov in FrontCoder
тут просто ориентируйся на такой момент:
string - это примитивный тип данных
String - это обертка для работы с примитивным типом данных string
источник

VF

Valentin Fedyakov in FrontCoder
т.е. все что начинается с большой буквы - это класс
источник

PD

Petya Danchuk in FrontCoder
у меня этих @typedef что-то много накопилось. я их в начале файла покидал. не знаю что на это скажут. хотя на работе сказали опиши струтуры параметров и что методы возвращают
источник

VF

Valentin Fedyakov in FrontCoder
Array это массив чего? строк или чисел или какого то кастомного типа?
источник

VF

Valentin Fedyakov in FrontCoder
к сожалению, я не встречал есть ли возможность как то вынести определение типов через jsdoc в какой то отдельный файл, как в TS где index.d.ts
источник

PD

Petya Danchuk in FrontCoder
почти всегда объектов
источник

VF

Valentin Fedyakov in FrontCoder
ага, кастомных со своими полями жеж, т.е. например User[]?
источник

PD

Petya Danchuk in FrontCoder
но я думаю те объекты излишне описывать, если скажут только. наверно так нужно мне Object[]
источник

VF

Valentin Fedyakov in FrontCoder
а смысл тогда от такой типизации и описалова?
источник

VF

Valentin Fedyakov in FrontCoder
описание типов нужно для 2 вещей
1) для разработчика, что бы он понимал что от него ждут
2) для статического анализатора, который будет моделировать работу JS на основании этих типов с целью поиска нарушения композиции и прав доступа
источник

VF

Valentin Fedyakov in FrontCoder
когда ты применяешь какие то общие вещи - Object[] или подобное, то ты заведомо отключаешь модуль статической провеки данного блока. а значит корректность данной системы может быть нарушена
источник

VF

Valentin Fedyakov in FrontCoder
тоже самое, если ты используешь тип any в TS
источник