vue3🔥 использоватьtypescriptРеализовано, поэтому я думаю, что его исходный код для нас, чтобы изучить tyepscriptЛучшие практики, я буду использовать примеры из его исходного кода, чтобы каждый научился использовать машинописный текст"is"характеристика.
непосредственный
Урок 2, Основные типы и вводные расширенные типы
Урок 4. Интерпретация расширенных типов
Урок 5. Что такое пространство имен
Специальная статья, изучайте машинопись в исходном коде vue3🔥🦕 - "есть"
Урок 6, что такое файл декларации? 🦕 - Глобальная декларация
Где используется "есть"?
Позвольте мне сначала рассказать о том, где он используется. Он часто используется для инкапсуляции "функций оценки типа". Такие функции должны использовать свойство "есть". Эти функции обычно имеют имена.isString/isFood/isVnodeд., например:
const isString = (val: any): val is string => typeof val === 'string'
концепция
— это ключевое слово в выражении вывода типа, которое «сужает» тип параметра, сравнивая его с возвращаемым значением функции.
😠 После прочтения этого предложения"я не понимаю" , Если вы хотите понять, что означает это предложение, продолжайте смотреть на следующий пример, 😁 Я гарантирую, что вы поймете это предложение после первого примера.
где важно использовать Vue »
Сначала научите васvscodeВ поиске мы можем искать по "обычным", таким как поиск\): \w+ isМы можем найти весь код, который использует атрибут «is».
Более общие правила см. здесь: https://juejin.cn/post/6844903886004682765.
Пример объяснения
Из искомого кода мы выбираем наиболее репрезентативное описание функции.
const isString = (val: any): val is string => typeof val === 'string'
фокус
Вы можете видеть, что возвращаемое значение является не типом, а выражением"val is string", этот код означает, когдаisStringВозвращаемое значениеtrue, параметрvalто естьstringТипы.
Не можете вернуть логическое значение напрямую?
нет!Глядя на код ниже, мы знаем, что вifПосле вынесения решения aa должен бытьstring, а тс не знает, тс подскажетaaможет бытьnullтип, не может выполнитьsubstringметод.
такНужно использоватьisfeature.ts можетВывод, основанный на суждениивне текущегоaaдляstringТипы:
Еще примеры «is» в vue3
// 是否是对象
export const isObject = (val: any): val is Record<any, any> =>
val !== null && typeof val === 'object'
// 是否ref对象
export function isRef(v: any): v is Ref {
return v ? v[refSymbol] === true : false
}
// 是否vnode
export function isVNode(value: any): value is VNode {
return value ? value._isVNode === true : false
}
// 是否插槽节点
export const isSlotOutlet = (
node: RootNode | TemplateChildNode
): node is SlotOutletNode =>
node.type === NodeTypes.ELEMENT && node.tagType === ElementTypes.SLOT
Дополнительные примеры можно найти в исходном коде.\): \w+ is, существует около 16 подобных кодов.
Обобщая, находим: «is«Это в основном применяется к функции оценки типа, так что тип параметра может быть правильно выведен в последующем логическом суждении. Что ж, теперь вы можете вернуться к объяснению в начале»is — это ключевое слово в выражении вывода типа, которое «сужает» тип параметра, сравнивая его с возвращаемым значением функции.", Теперь ты это понимаешь?
упражняться
Мы сами пишем"Определить, является ли регулярное выражение"Функция.
🚀 Ответы
function isRegExp (input: any): input is RegExp {
return '[object RegExp]' === Object.prototype.toString.call(input);
}
Суммировать
Если вам нравится TS, если вы также любите TS, вы можете прочитать базовую статью о TS, которую я написал ранее.
Урок 2, Основные типы и вводные расширенные типы
Урок 4. Интерпретация расширенных типов
Урок 5. Что такое пространство имен?
Так же прошу всех побольше практиковаться.Желаю вам как можно скорее освоить ts,и выложить 2 проекта которые я написал в ts в качестве референса.
✋ Библиотека жестов для мобильных устройств/ПК, поддержка: касание/нажатие/панорамирование/пролистывание/вращение/сжатие GitHub.com/any86/anyi-he…
🍭 Превратите компонент vue в команду, подобную этой. $xxx GitHub.com/easy86/v UE-от…
Группа WeChat
Спасибо за чтение, если у вас есть какие-либо вопросы, вы можете добавить меня в WeChat, я приглашу васГруппа WeChat(Из-за ограничения Tencent на 100 участников в группах WeChat после того, как более 100 участников должны быть привлечены участниками группы)