-
用 Intl.Segmenter 按用户感知的词、句和字素边界处理中英文标题截断,讲清中文分词、emoji、浏览器能力检测与稳定降级方案。
-
CSS :has() 让父元素可以根据子元素状态切换样式,适合表单错误提示、选中卡片和条件高亮。文章用 :user-invalid、:checked 与 @supports 说明最小写法、边界和旧浏览器降级。
-
CSS corner-shape 可以在 border-radius 的基础上实现 bevel、scoop、notch 和 squircle 等异形圆角,但目前仍需配合 @supports 和普通圆角降级。本文用卡片组件说明写法、参数边界与验收方法。
-
CSS reading-flow 可以在特定布局场景下调整 Grid 或 Flex 子项的阅读与 Tab 顺序,但它仍是实验性能力,必须优先保持合理 DOM 顺序,并用浏览器能力检测安排降级。
-
用浏览器目录句柄完成选择与读写权限复查,配合安全上下文、用户手势和传统上传降级完成前端文件工作流。
-
普通 CSS 自定义属性更像字符串,直接参与渐变时常常只能跳变。本文用 @property 注册颜色属性,说明 syntax、inherits、initial-value 的配合方式,并通过渐变、无障碍和旧浏览器降级检查完成验收。
-
交叉类型(Intersection Types)的作用,说白了就是把多个类型“叠加”到一起,组合成一个全新的类型,而这个新类型会同时具备所有成员类型中的内容。 这类似于面向对象中的多重继承,让一个类型可以拥有多个类型的特性。 交叉类型工作原理 类型 A (Person) name: string a
-
模板字面量类型基于字符串字面量类型构建,支持通过插值生成新的字符串类型。 这让 TypeScript 能够对字符串进行更精确的类型检查,适用于事件名、路径、类名等场景。 模板字面量类型工作原理 输入类型 type Event = "click" | "focus" type Method = "ge
-
把现有的 Ja vaScript 项目,按阶段、循序渐进地迁移到 TypeScript。 迁移策略 添加 tsconfig.json 重命名 .js 为 .ts 逐步添加类型注解 启用严格模式 配置 tsconfig.json tsconfig.json { "compilerOptions": {
-
infer 是 TypeScript 条件类型中的关键字,用于从类型中推断出新的类型。 它允许在泛型条件类型中提取和推导类型,实现强大的类型操作。 infer 关键字工作原理 原始类型 type Promise = { value: T } infer 推导 提取出的类型 type ValueOf
-
协变与逆变是 TypeScript 类型系统中的重要概念,理解它们有助于编写类型安全的代码。 它们描述了泛型类型在父子类型关系中的行为。 协变与逆变概念 协变 (Covariant) 输出类型:安全 Dog → Animal Provider → Provider 不变 (Invariant) 输入
-
paths 是 tsconfig.json 中的配置选项,用于配置模块路径别名。 它可以让导入路径更简洁,同时保持代码的组织结构清晰。 路径映射 paths 工作原理 原始导入路径 import Button from "../../components/Button" 使用别名导入 import
-
项目引用是 TypeScript 为大型工程提供的一项组织能力,说白了,就是把一个体量较大的 TypeScript 项目拆分成更小、更清晰的模块来管理。 它可以实现增量构建、更好的代码组织和更快的编译速度。 项目引用 References 原理 主项目 (app) package.json tsco
-
Monorepo 是一种将多个项目放在同一个代码仓库中的开发模式。 TypeScript 通过项目引用和工具链支持 Monorepo,可以高效管理多个包。 Monorepo 项目结构 根目录 (root) package.json | tsconfig.json | lerna.json | tur
-
TypeScript 项目的性能优化涉及编译速度、运行时性能和代码体积等多个方面。 本教程介绍常见的性能优化技巧,帮助构建更高效的 TypeScript 应用。 TypeScript 性能优化维度 编译速度 增量构建 | skipLibCheck 运行时性能 类型推断 | 避免 any 包体积 Tr