вообще добавлять такие типы?
/**
* инициализация основых типов
* @typedef {import('vue').Ref<string>} RefString
* @typedef {import('vue').Ref<number>} RefNumber
* @typedef {import('vue').Ref<boolean>} RefBoolean
* @typedef {import('vue').Ref<array>} RefArray
* @typedef {import('vue').Ref<Date>} RefDate
* @typedef {import('vue').ComputedRef<string>} ComputedString
* @typedef {import('vue').ComputedRef<number>} ComputedNumber
*/
/**
* @type {RefNumber}
*/
const step = ref(0);
Даже если убрать @type {RefNumber}, то ts в VSCode все равно подсвечивает ошибку если я напишу step.value = 'qwerty':
Type 'string' is not assignable to type 'number'
Сейчас думаю может их вообще не добавлять в константы и переменные, чтобы не раздувать код, если только только ради комментирования JSDoc, но это тоже мало где нужно, и так понятно по названию.
С функциями JSDoc помогает: сделать описание в комментарии, и без указания типов аргументы будут any. Хотя сами typedef c Ref-ами конечно нужны, так как они могут быть и в функциях(@param, @returns) и в computed-функциях. Можно ли @typedef-ы глобально как-то инициализировать, чтобы не делать это в каждом модуле? Мне, кажется, нет.
Сам TS я трогал, но самый примитив непродолжительное время на маленьком проекте.
Не стоит абсолютно
в примере вообще какой-то бред. зачем?
я тоже думал что это нужно, пока не проверил сам. Но допустим здесь уже больше смысла, так как если не добавить тип, то добавление метода toFixed не покажет ошибку: /** @type {ComputedString} */ const supplyName = computed(() => contragent.value?.[0]?.name); const supplyNameValue = supplyName.value.toFixed(2);
Нету смысла Абсолютно
дак тс сам это все выводит. зачем с джсдок ебаться?
с computed не выводит
Обсуждают сегодня