[{"data":1,"prerenderedAt":154},["ShallowReactive",2],{"content-/blog/typescript-advanced":3,"related-blog":129},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":8,"description":9,"keywords":10,"author":11,"date":12,"category":13,"image":14,"body":15,"_type":123,"_id":124,"_source":125,"_file":126,"_stem":127,"_extension":128},"/blog/typescript-advanced","blog",false,"","TypeScript 进阶技巧","TypeScript 类型系统、泛型、装饰器等高级特性的使用技巧","TypeScript 进阶技巧, Blog, HTMLPAGE","HTMLPAGE","2025-11-26","待分类","/content-images/blog/blog.jpg",{"type":16,"children":17,"toc":115},"root",[18,26,32,47,52,74,79,92,97,105,110],{"type":19,"tag":20,"props":21,"children":22},"element","p",{},[23],{"type":24,"value":25},"text","TypeScript 进阶主题涵盖类型系统的高级用法、性能注意点与工程化实践，本文汇总若干常见模式与反模式。",{"type":19,"tag":27,"props":28,"children":30},"h3",{"id":29},"高级类型模式",[31],{"type":24,"value":29},{"type":19,"tag":33,"props":34,"children":35},"ul",{},[36,42],{"type":19,"tag":37,"props":38,"children":39},"li",{},[40],{"type":24,"value":41},"条件类型（Conditional Types）与映射类型（Mapped Types）用于构造可组合的类型工具。",{"type":19,"tag":37,"props":43,"children":44},{},[45],{"type":24,"value":46},"类型层级推导（infer）可用于从复杂类型中提取子类型。",{"type":19,"tag":27,"props":48,"children":50},{"id":49},"可维护性实践",[51],{"type":24,"value":49},{"type":19,"tag":33,"props":53,"children":54},{},[55,60],{"type":19,"tag":37,"props":56,"children":57},{},[58],{"type":24,"value":59},"为公共 API 提供精确的类型签名，避免 any 泛化逃避。",{"type":19,"tag":37,"props":61,"children":62},{},[63,65,72],{"type":24,"value":64},"使用 ",{"type":19,"tag":66,"props":67,"children":69},"code",{"className":68},[],[70],{"type":24,"value":71},"tsconfig",{"type":24,"value":73}," 严格模式（strict）捕获潜在类型错误。",{"type":19,"tag":27,"props":75,"children":77},{"id":76},"性能与构建",[78],{"type":24,"value":76},{"type":19,"tag":33,"props":80,"children":81},{},[82,87],{"type":19,"tag":37,"props":83,"children":84},{},[85],{"type":24,"value":86},"复杂泛型可能导致类型检查变慢，适当简化类型或将复杂类型抽离到声明文件中。",{"type":19,"tag":37,"props":88,"children":89},{},[90],{"type":24,"value":91},"增量构建（tsc --incremental）与项目引用（Project References）帮助大型仓库缩短构建时间。",{"type":19,"tag":27,"props":93,"children":95},{"id":94},"与运行时协作",[96],{"type":24,"value":94},{"type":19,"tag":33,"props":98,"children":99},{},[100],{"type":19,"tag":37,"props":101,"children":102},{},[103],{"type":24,"value":104},"使用 Zod / io-ts 等库在边界处做运行时校验，保持类型与运行时数据的一致性。",{"type":19,"tag":27,"props":106,"children":108},{"id":107},"结论",[109],{"type":24,"value":107},{"type":19,"tag":20,"props":111,"children":112},{},[113],{"type":24,"value":114},"TypeScript 的强大来自其类型表达能力，但也可能增加复杂性。选择可维护的类型抽象并结合运行时校验，是长期演进的可靠策略。",{"title":7,"searchDepth":116,"depth":116,"links":117},3,[118,119,120,121,122],{"id":29,"depth":116,"text":29},{"id":49,"depth":116,"text":49},{"id":76,"depth":116,"text":76},{"id":94,"depth":116,"text":94},{"id":107,"depth":116,"text":107},"markdown","content:blog:typescript-advanced.md","content","blog/typescript-advanced.md","blog/typescript-advanced","md",[130,138,146],{"_path":131,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":132,"description":133,"keywords":134,"author":11,"date":12,"category":13,"image":14,"_type":123,"_id":135,"_source":125,"_file":136,"_stem":137,"_extension":128},"/blog/2025-q1-updates","2025 Q1 产品更新","第一季度重大功能发布：AI 生成优化、新模板上线、编辑器增强等","2025 Q1 产品更新, Blog, HTMLPAGE","content:blog:2025-q1-updates.md","blog/2025-q1-updates.md","blog/2025-q1-updates",{"_path":139,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":140,"description":141,"keywords":142,"author":11,"date":12,"category":13,"image":14,"_type":123,"_id":143,"_source":125,"_file":144,"_stem":145,"_extension":128},"/blog/2025-roadmap","2025 产品路线图","展望 2025 年的产品规划：AI 能力增强、模板扩充、国际化等","2025 产品路线图, Blog, HTMLPAGE","content:blog:2025-roadmap.md","blog/2025-roadmap.md","blog/2025-roadmap",{"_path":147,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":148,"description":149,"keywords":150,"author":11,"date":12,"category":13,"image":14,"_type":123,"_id":151,"_source":125,"_file":152,"_stem":153,"_extension":128},"/blog/ab-testing","A/B 测试","通过 A/B 测试验证设计方案","A/B 测试, Blog, HTMLPAGE","content:blog:ab-testing.md","blog/ab-testing.md","blog/ab-testing",1774945285206]