Skip to content

0913 今日总结

今日工作

问题,原因,解决方式,优化,巧妙实现,新知识

问题1: ts 类型匹配问题

前两天做 ts 类型优化,遇到个类型不匹配问题,参考在线链接:typescript-playground

代码很简单,目的就是为了让 typeprops 绑定;不能使用泛型;

ts
type Keys = 'a' | 'b'

type AProps = {
    aa: string;
}
type BProps = {
    bb: string;
}

type KeysMap = {
    a: AProps;
    b: BProps;
}

type Field = {
    key: Keys;
    props: KeysMap[Keys]
}

const field: Field = {
    key: 'a',
    props: {} // want infer AProps
    // Error: Type '{}' is not assignable to type 'AProps | BProps'.
}

我把这个问题抛在了群里,有大佬给出了答案,如下:

ts

针对我需要的使用方式,我优化了下,如下:优化后大概使用方式

感想

真正做组件开发和优化的时候,才知道自己的 ts 能力有多薄弱,还得多练练 类型体操

问题2 git 不切换分支合并代码

我们知道,git 操作中,如果要合并当前分支到目标分支,需要先切换分支到目标分支,再把当前分支合并进去;

同时昨天问我:有没有什么命令或者方式,不需要切换分支,就能合并到目标分支?

我搜了下 Stack Overflow,发现有类似答案;同事实践后可行

参考 Git checkout and merge without touching working tree

代码:

bash
git fetch . feature1:master

答案有解释:

好文推荐

有感好文,专题好文

TOP3

❤️ 感受

  • 很优秀的时间管理和人生管理系统,确实是,要让一件事情有意义,需要记录下来;
  • 确定目标,持续输出,持之以恒;类似一个每日反思整理,不断提升自己;

🤲 如何做到和作者一样优秀呢?

  • 规划自己的人生系统(目标):读书、整理、兴趣、工作、英语、反思等;
    • 确定目标的标准:如 读完一本书,学会一项技能,输出几篇文章等;
    • 类似于目标管理,需要对上述目标做拆解;类似 smart 原则
    • 确定好任务的状态:任务详情、状态(待规划、进行中、已完成等)、执行时间和周期、关联目标等;
  • 强制规划自己的时间
    • 有了目标和拆解任务,接下来就是合理安排时间去执行;
    • 通常的时间选择:早晨、上下午、周末等;一般是自己效率最高,时间率用率最佳的时间段;
    • 填写自己的日程表;
  • 记录:对于自己的任务执行细节打卡记录;留下时间的痕迹;
    • 每日记录:可以使用模板,快速记录;
    • 周、月记录:
  • 其他:合理利用工具,如 app,飞书文档,语雀文档等 方便管理和记录;

扫码登录方案

总结几个技术要点:

  • 二维码
    • 需要临时生成,具备有效期,一般时间比较短;
    • 会有几个状态:已扫描,已确认,已取消;
    • 轮训状态:可以使用轮训方案,websocket 方案,还有 sse 方案;关于 sse 可以参考 详解 Server Sent Event(SSE)
    • 二维码轮训状态已确认后,拿到 token 给到页面刷新页面;
  • 后端:生成二维码,设置有效期,设置 有效 token;

如何封装 axios

个人感受

基础封装:

  • 基础请求:get | post | 文件上传等
  • 错误拦截
  • loading 处理
  • 参数统一
  • token 带参;

高阶封装:

  • 请求取消
  • 请求重试
  • 结合 双 token 无感刷新
  • 并发队列,避免中断 loading

不过这些东西,很多开源的库已经做的很好了,比如

Typescript 类型体操,高阶知识

项目/博客推荐

值得学习 作者/项目/工具等

博客

看了几个优秀的 vitepress 主题博客:

工具

Released under the MIT License.