Skip to content

Latest commit

 

History

2 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

wjs-ts-practice

TypeScript 实战积累 · 从业务类型到踩坑笔记

MIT License TypeScript Maintenance

将多年 TypeScript 学习积累的笔记与练习开源沉淀。涵盖业务场景类型设计、常用工具类型实战、设计模式的 TS 实现、进阶技巧沉淀以及常见踩坑记录,共 32 个 Demo,每个 Demo 以 HTML 页面形式展示代码、类型推导说明与使用场景,并附带 TypeScript Playground 链接便于在线运行。

在线预览


特性

  • 业务类型封装 - 统一 API 响应、分页、表单、事件总线等真实业务场景的类型设计
  • 工具类型实战 - 内置工具类型速查、泛型约束、条件类型等日常开发必备
  • 设计模式 TS 实现 - 单例、工厂、观察者、策略模式的类型安全实现
  • 进阶技巧沉淀 - 类型守卫、类型收窄、第三方库类型声明等实用技巧
  • 踩坑记录 - 可选属性、数组推断、Object.keys 等容易踩坑的类型问题
  • Playground 即点即跑 - 每个 Demo 附带 TypeScript Playground 链接
  • 零依赖纯静态 - 纯 HTML/CSS,无构建工具,无外部 CDN

功能模块

模块 目录 说明 Demo 数量
业务类型 business/ API 响应、分页、表单、事件总线、校验规则、表格列、字典、请求配置、路由配置 9
工具类型 utilities/ 内置工具类型速查、泛型约束、条件类型、类型合并、按 Key 精细控制 8
设计模式 patterns/ 单例、工厂、观察者、策略模式 4
进阶技巧 tricks/ 类型守卫、类型收窄、any/unknown/never、第三方库声明、satisfies、const 断言 6
踩坑记录 pitfalls/ 可选属性、数组推断、Object.keys、泛型推断、全局声明污染 5

目录结构

wjs-ts-practice/
├── index.html                       # 导航首页
├── utilities/                       # 工具类型
│   ├── builtin-tools.html           # 内置工具类型速查
│   ├── valueof-keyof.html           # ValueOf 与 KeyOf
│   ├── merge-overwrite.html         # Merge 与 Overwrite 类型合并
│   ├── generic-constraints.html     # 泛型约束详解
│   ├── conditional-basics.html      # 条件类型基础
│   ├── deep-required.html           # DeepRequired 深度必填
│   ├── partial-by-keys.html         # PartialByKeys 按 key 设可选
│   └── required-by-keys.html        # RequiredByKeys 按 key 设必填
├── business/                        # 业务类型
│   ├── api-response.html            # 统一 API 响应类型
│   ├── pagination.html              # 分页类型封装
│   ├── form-schema.html             # 表单 Schema 类型
│   ├── event-bus.html               # 事件总线类型
│   ├── form-validation.html         # 表单校验规则类型
│   ├── table-column.html            # 表格列定义类型
│   ├── dictionary.html              # 字典/枚举类型封装
│   ├── request-config.html          # 请求配置类型封装
│   └── route-config.html            # 路由配置类型
├── patterns/                        # 设计模式 TS 实现
│   ├── singleton.html               # 单例模式
│   ├── factory.html                 # 工厂模式
│   ├── observer.html                # 观察者模式
│   └── strategy-pattern.html        # 策略模式
├── tricks/                          # TS 技巧
│   ├── type-guard.html              # 类型守卫(is 关键字)
│   ├── type-narrowing-ways.html     # 类型收窄的 5 种方式
│   ├── any-unknown-never.html       # any / unknown / never 的区别
│   ├── declare-module.html          # 给第三方库补类型声明
│   ├── satisfies-operator.html      # satisfies 操作符
│   └── const-assertion.html         # const 断言技巧
├── pitfalls/                        # 踩坑记录
│   ├── optional-vs-undefined.html   # 可选属性 ?: vs | undefined
│   ├── array-inference.html         # 数组类型推断的坑
│   ├── object-keys.html             # Object.keys() 的类型问题
│   ├── generic-inference.html       # 泛型推断失败的常见原因
│   └── global-declaration.html      # 全局类型声明污染
├── LICENSE                          # MIT
└── README.md                        # 项目说明

快速开始

在线预览

直接访问 GitHub Pages 站点 浏览所有 Demo,点击卡片进入对应页面查看代码与说明。

本地运行

由于是纯静态 HTML,克隆后直接用浏览器打开 index.html 即可:

git clone https://github.com/wjs-tech/wjs-ts-practice.git
cd wjs-ts-practice
# 直接用浏览器打开 index.html,或启动本地服务器
npx serve .

复制使用

每个 Demo 页面都有完整的 TS 代码块,可直接复制到 TypeScript 项目中使用。点击页面底部"在 Playground 中尝试"按钮可跳转到 TypeScript Playground 在线运行验证类型推导。


TS 学习路径建议

阶段 重点内容 对应模块
基础 类型守卫、类型收窄、any/unknown/never、内置工具类型 tricks/、utilities/builtin-tools
进阶 泛型约束、条件类型、类型合并、第三方库声明 utilities/、tricks/declare-module
实战 业务类型设计、设计模式类型约束 business/、patterns/
避坑 常见类型陷阱与解决方案 pitfalls/*

技术栈

  • TypeScript 5.x - 类型系统核心
  • HTML5 / CSS3 - 静态页面展示
  • TypeScript Playground - 在线运行环境
  • GitHub Pages - 静态托管

License

MIT © wjs (王金盛) 2021-2026

About

TypeScript 实战积累 - 从业务类型到踩坑笔记

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages