guqzhou guqzhou
首页
快捷导航
下载站
  • Html 篇
  • Javascript 基础篇
  • 框架

    • Vue2
  • 前端文章

    • Css 篇
    • 微信开发
    • JavaScript
    • Vue
  • 学习笔记

    • 《JavaScript教程》笔记
    • 《ES6 教程》笔记
    • 《Vue》笔记
    • 《TypeScript 从零实现 axios》
    • 小程序笔记
    • JavaScript 基础
  • HTML
  • CSS
  • 技术文档
  • GitHub技巧
  • Nodejs
  • 博客搭建
  • 面试题库

    • HTML
    • CSS
    • jQuery
    • Vue
    • 零碎
  • 面试心得

    • 杂言碎语
  • 摘抄收录

    • ☆ 励志鸡汤
    • ❀ 人间烟火
    • ☣ 万物沦丧
    • ✌ 关掉烦恼
    • ✲ 小酒馆
  • 读书笔记

    • 《小狗钱钱》
    • 《穷爸爸富爸爸》
    • 《聪明人使用方格笔记本》
关于
  • 学习
  • 面试
  • 心情杂货
  • 友情链接
  • 分类
  • 标签
  • 归档
  • 网站
  • 资源
  • Vue资源
  • 主站CDN
  • Vercel
  • Netlify
  • Github
GitHub

guqzhou

喜欢所以去追求!
首页
快捷导航
下载站
  • Html 篇
  • Javascript 基础篇
  • 框架

    • Vue2
  • 前端文章

    • Css 篇
    • 微信开发
    • JavaScript
    • Vue
  • 学习笔记

    • 《JavaScript教程》笔记
    • 《ES6 教程》笔记
    • 《Vue》笔记
    • 《TypeScript 从零实现 axios》
    • 小程序笔记
    • JavaScript 基础
  • HTML
  • CSS
  • 技术文档
  • GitHub技巧
  • Nodejs
  • 博客搭建
  • 面试题库

    • HTML
    • CSS
    • jQuery
    • Vue
    • 零碎
  • 面试心得

    • 杂言碎语
  • 摘抄收录

    • ☆ 励志鸡汤
    • ❀ 人间烟火
    • ☣ 万物沦丧
    • ✌ 关掉烦恼
    • ✲ 小酒馆
  • 读书笔记

    • 《小狗钱钱》
    • 《穷爸爸富爸爸》
    • 《聪明人使用方格笔记本》
关于
  • 学习
  • 面试
  • 心情杂货
  • 友情链接
  • 分类
  • 标签
  • 归档
  • 网站
  • 资源
  • Vue资源
  • 主站CDN
  • Vercel
  • Netlify
  • Github
GitHub
  • vue2
  • CSS

  • Javascript基础

  • javascript进阶

  • typeScipt

  • vue2

  • vue3

    • vue3简介
    • 创建vue3工程
    • composition API
    • vue + ts之旅
    • provide与inject的用法
    • vuex的使用
    • vue3学习
    • vue3+ts 源码学习
      • type userType 类型别名导读
        • 通过类型起个别名
        • 模块
        • 用于字符串变量类型
      • declare const storageSession 类型声明文件
      • declare class sessionStorageProxy implements ProxyStorage
    • watch的用法
    • watchEffect
    • v-model介绍
    • vite3 + js 迁移ts过程
    • vue3自定义指令的使用
    • VueDraggable的使用
  • react

  • vue实战

  • pinia的使用

  • gis

  • 前端文章

  • JavaScript文章

  • Vue文章

  • 小程序开发文章

  • uni-app

  • 学习笔记

  • TaroUI的使用

  • 工具使用

  • 前端
  • vue3
guqzhou
2023-02-15
0

vue3+ts 源码学习

# type userType 类型别名导读

# 通过类型起个别名

export type userType = {
    username?: string;
    roles?: Array<string>;
}
1
2
3
4

常用于给联合类型起别名

 state: (): userType => ({
    // 用户名
    username:
      storageSession().getItem<DataInfo<number>>(sessionKey)?.username ?? "",
    // 页面级别权限
    roles: storageSession().getItem<DataInfo<number>>(sessionKey)?.roles ?? []
  })
1
2
3
4
5
6
7

# 模块

import { userType } from "./types";
1

# 用于字符串变量类型

type str = 'li' | 'zi'
let name:str = 'li'
1
2

# declare const storageSession 类型声明文件

当使用第三方库时,我们需要引用它的声明文件,才能获得对应的代码补全、接口提示等功能

image-20230215082119235

总结概念:
.d.ts能不能包含代码实现呢?声明一下add函数去调用一下这样可不可以呢?
因为.d.ts只能包含类型信息,而不能包含具体的代码实现

类型声明文件

npm install --save @types/lodash
1

# declare class sessionStorageProxy implements ProxyStorage

让implements关键字让class实现接口 protected表示受保护的,仅表示所在的类和子类中可见

declare class sessionStorageProxy implements ProxyStorage {
    protected storage: Storage;  // 
    constructor(storageModel: any); // 继承
    /**
     * @description 储存对应键名的Storage对象
     * @param k 键名
     * @param v 键值
     */
    setItem<T>(k: string, v: T): void;
    /**
     * @description 获取对应键名的Storage对象
     * @param k 键名
     * @returns 对应键名的Storage对象
     */
    getItem<T>(k: string): T;
    /**
     * @description 删除对应键名的Storage对象
     * @param k 键名
     */
    removeItem(k: string): void;
    /**
     * @description 删除此域的所有Storage对象
     */
    clear(): void;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
上次更新: 2023/03/05, 15:03:00
vue3学习
watch的用法

← vue3学习 watch的用法 →

最近更新
01
面向对象
01-05
02
typescript用localStorage封装过期时间
01-05
03
npm、pnpm、yarn删除文件缓存
12-14
更多文章>
Theme by Vdoing | Copyright © 2021-2024 guqzhou | 萌ICP备20238188号
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式