-
网页里同时存在 dialog、抽屉和自定义浮层时,可用 CloseWatcher 统一接收 ESC 或系统返回关闭请求,再把焦点恢复、脏数据确认和旧浏览器回退放进同一条关闭链路。
-
用 CSS @container style() 读取组件祖先的自定义属性,让同一组件在浅色、深色和高对比主题下保持局部样式一致,并补上浏览器降级与可访问性检查。
-
当 hover 位移、入场缩放和循环旋转同时写进一个元素时,animation-composition 可以明确 transform 的叠加方式。本文用 add、accumulate 和 replace 拆开关键帧冲突,并给出兼容降级与验收方法。
-
搜索框快速输入时,慢请求可能晚于新请求返回,旧结果就会覆盖当前关键词。本文用请求序号、AbortController 和有限并发预算拆解竞态边界,并给出取消、回收和键盘操作下的验收办法。
-
用 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) 输入