标签: TypeScript

50 个内容

笔记(48)

本文介绍了在Vue 3 + TypeScript项目中,使用`vue-tsc -b`进行类型检查的最佳实践。针对多包/大型项目,`vue-tsc -b`支持Project References构建模式,实现依赖顺序编译和增量构建。对于单体应用,建议使用`vue-tsc --noEmit`进行类型检查。

Elliot Yang·
223 浏览

Vue 3 允许在`` 中使用 `generic` 属性声明泛型类型参数,支持多个参数、`extends` 约束和默认类型。当无法自动推断类型时,使用 `@vue-generic` 指令显式指定类型。`vue-component-type-helpers` 库用于在 `ref` 中使用泛型组件的引用。

Elliot Yang·
195 浏览

Hono框架中,`app.use(auth).get(...)`会导致`auth`中间件全局生效。推荐使用子应用`app.route()`或精确路径方式注册中间件,限制`auth`的作用范围,避免影响其他路由。子应用方式在大项目中更易维护。

Elliot Yang·
121 浏览

本文深入剖析 WebStorm 工程化实践,旨在提升前端开发效率。面对大型项目索引慢、内存占用高等问题,提出了优化方案,包括配置忽略目录、调整 JVM 参数等。同时,探讨了智能导入、JSX 属性风格等工程化配置,并展望了 Fleet 架构带来的变革。

Elliot Yang·
161 浏览

本文剖析前端、后端、基础设施等多领域技术难题,如iOS Chrome路由、Monaco Editor优化、NestJS请求生命周期、Cookie同步、Docker日志、OpenWrt DNS、TS装饰器、Win键失效及Web标准,并提供实战方案和未来趋势展望。

Elliot Yang·
94 浏览

本文深入探讨了 TypeScript 类型系统的设计哲学与实践智慧,包括类型操作符进阶应用(`infer`、`keyof`、映射类型、`never`),声明空间的工程化实践,类型兼容性的协变与逆变,以及类型编程的最新进展和编译性能优化策略。同时,还讨论了类型安全的 API 响应处理和高级模式匹配实践,以及类型系统边界的探索。

Elliot Yang·
165 浏览

本文深度解析了前端开发中的关键算法与原理,涵盖字符串处理、类型系统、位运算、动态规划、随机算法、二叉树遍历、JavaScript浮点数精度等。重点包括路径字符串转对象、字母异位词判断、类型柯里化、汉明距离计算、水塘抽样等经典问题,并探讨了工程实践和进阶思考。

Elliot Yang·
90 浏览

堆是满足堆序性质的完全二叉树,常用数组实现。核心操作优化包括插入的`heapifyUp`修正和删除的空堆检测。应用广泛,如优先队列和Top K问题。优化手段包括Floyd建堆法和TypedArray。存在二叉堆、斐波那契堆等变体,面临并发、内存管理等挑战。未来趋势包括持久化堆和GPU加速。

Elliot Yang·
124 浏览

本文深入解析了 HTTP Header 换行符、正则兼容性、IDE 调优、TS 类型引用等技术难题,并提供实战指南。同时探讨了 Git 大小写敏感、GitHub Pages 路由Hack 等问题,最后展望了 HTTP/3、WASM 正则等技术趋势。

Elliot Yang·
101 浏览

本文深入解析 TypeScript 数组类型约束,涵盖非空数组、元素非空校验的实现,并探讨了递归类型映射、联合类型处理等高级机制。强调编译时类型与运行时校验协同,以及性能优化策略。最后给出工程实践、问题解决及最佳实践指南。

Elliot Yang·
106 浏览

链表反转是数据结构基础,涉及指针操作、递归思维。本文解析了双指针迭代(O(1)空间)和递归(O(n)空间)两种主流方案,对比优劣并探讨工程实践要点及进阶问题,强调生产环境优先选择迭代法。

Elliot Yang·
91 浏览

本文深入解析Ant Design实战问题,涵盖表单状态管理、ProTable类型系统、Umi微前端调优及文件上传安全。探讨了React 18下Form初始值同步、类型推导优化、跨应用协同及安全上传架构,并展望Ant Design 5.0等未来技术趋势。

Elliot Yang·
145 浏览

本文深入探讨JS到TS的类型系统和`content-visibility`性能优化。涵盖类型声明文件生成策略、浏览器渲染机制、滚动异常解决方案,以及工程实践中的类型生成和性能优化策略。强调平衡类型安全与渲染性能,并提供决策框架。

Elliot Yang·
96 浏览

本文深入解析 Nginx `add_header` 指令(继承、状态码限制、安全头配置)及 WebStorm 类型提示优化。强调安全头配置最佳实践、WebStorm 类型提示定制及性能优化,并探讨了安全策略演进、IDE智能演进等前沿趋势。

Elliot Yang·
84 浏览

TypeScript 4.9的`satisfies`操作符在确保类型安全的同时,保留了变量的原始类型推断,解决了类型验证与保留的矛盾。它适用于精确属性控制、动态键值约束等场景,优于类型断言。解决递归类型错误需分析根本原因,谨慎使用`skipLibCheck`。

Elliot Yang·
115 浏览

本文深入探讨了Nginx负载均衡和TypeScript类型扩展。涵盖TS声明合并、Nginx负载均衡算法(Round Robin, Least Conn, IP Hash, Generic Hash)、Keepalive连接优化、压缩算法、分层缓存、TLS 1.3和监控调试,并展望了服务网格、WebAssembly扩展和AI驱动的自动调优趋势。

Elliot Yang·
103 浏览

本文深入解析了 TypeScript 类型声明、ESLint 规则、Node.js 子进程管理、WebStorm 性能优化及 Copilot 代理配置等多个技术领域。强调理解原理、性能测量、优化实施和效果验证,并在技术迭代中保持对底层机制的敬畏。

Elliot Yang·
158 浏览

周报深入剖析 Git Hooks 失效、TS 作用域冲突、Swagger OperationId 工程化、Nginx 配置、Git 忽略规则等问题,并展望技术趋势。通过案例解析和实践,提供解决方案和性能考量。推荐 Git、TS 和 Nginx 相关深入阅读资源。

Elliot Yang·
103 浏览

本文深入解析React-Three-Fiber开发中的关键技术问题,涵盖GLTF处理、类型系统、Next.js集成、资源管理、WebGPU探索及安全策略。重点强调了gltfjsx生成精确类型、Draco压缩优化、服务端渲染问题解决和性能优化,并提供了调试工具及未来趋势展望。

Elliot Yang·
152 浏览

Prisma在大规模应用中面临类型系统性能和分库分表支持的挑战。类型膨胀导致VSCode卡顿,可通过拆分schema、优化TS配置和硬件升级缓解。分库分表方面,Prisma对分区表支持不足,可采用混合架构,注入分区元数据并扩展Prisma Client。Prisma未来将优化类型生成、支持分布式引擎和智能分区感知。应克制schema设计、混合使用原生SQL,并监控编译时长。

Elliot Yang·
117 浏览

本文深入解析了 TypeScript 类型系统,对比 interface 与 type 的差异和应用场景,强调类型注解的工程价值,并探讨类型谓词、泛型约束、条件类型等进阶实践。同时,分析了编译性能优化策略和未来演进方向。

Elliot Yang·
95 浏览

TypeScript的静态类型检查在运行时会丢失类型信息。Zod采用函数式模式组合和类型推断,实现类型安全。class-validator则使用装饰器与类结构绑定,与ORM深度整合。两者各有优劣,选型需考虑项目特点和框架。未来可结合编译时类型检查和混合方案。

Elliot Yang·
114 浏览

TypeScript 4.9 引入 `satisfies` 运算符,旨在解决类型注解和类型推断的矛盾,保留字面量类型信息。它通过验证类型是否满足目标类型,同时保留最具体的推断类型,强化运行时安全,适用于配置对象验证和联合类型精确推断等场景。应权衡使用,避免过度增加编译耗时。

Elliot Yang·
95 浏览

本文总结了在 React 项目中使用 TypeScript 的实用技巧。包括:获取枚举键值类型、传递 JSX 或组件作为 Props、使用 `satisfies` 运算符、灵活运用模板字面量类型、定义 `useParams` 类型、类型缩小方法以及 `Array<T>` 与 `T[]` 的选择。这些技巧有助于提升代码质量、安全性和可维护性。

Elliot Yang·
102 浏览

使用 `vue-tsc --build` 和 `composite` 优化 TypeScript 构建:启用 `composite` 和 `incremental` 可实现增量编译,仅编译修改部分。结合项目引用,可在多模块项目里高效构建并管理依赖。`vue-tsc` 支持 Vue 单文件组件,需配置 `rootDir` 和 `outDir`。避免随意删除 `.tsbuildinfo` 或使用 `--force`。

Elliot Yang·
182 浏览

在 TypeScript 文件中,`// @ts-nocheck` 注释可禁用整个文件的类型检查;ESLint 中,`/* eslint-disable */` 注释可禁用所有规则,或指定规则禁用,也可通过配置禁用。两者均可同时使用,置于文件顶端,但应避免滥用,建议逐步修复问题。

Elliot Yang·
94 浏览

TypeScript 中 `never` 类型表示永不存在的值,常见于抛出异常或无限循环函数。它可用于排除不需要的类型,如 `NonNullable`。`never` 还可用于 `switch` 或 `if` 语句中,通过类型检查避免遗漏条件分支,确保代码的完备性。

Elliot Yang·
87 浏览

该文探讨Node.js同步/异步文件读取性能差异及阻塞问题。背景:`fs.promises.readFile`比`fs.readFile`慢。问题:同步读取阻塞事件循环,影响并发。方案:避免同步I/O,采用异步方式,如`fs.promises.readFile`,提升服务器并发性能。

Elliot Yang·
141 浏览

本文介绍了 TypeScript 中 `satisfies` 运算符的实用技巧。`satisfies` 允许在不丢失类型推断的情况下为值添加类型注解,特别适用于强类型化函数。文章通过 `URLSearchParams` 的例子,展示了如何使用 `satisfies` 实现更强的类型检查,避免因类型宽松导致的潜在错误。

Elliot Yang·
112 浏览

本文对比了 TypeScript 运行时类型检查的两种方案:Zod 和 class-validator。文章通过作者的实践项目,展示了 Zod 在开发体验上的优势。

Elliot Yang·
87 浏览

本文针对TypeScript性能优化提出建议。问题:类型推导在大项目中变慢,影响开发效率。方案:优先使用interface定义类型,利用其冲突检测特性;添加类型注解,特别是返回类型,减少编译器工作量,提升编译速度。

Elliot Yang·
91 浏览

本文介绍了如何使用`@monaco-editor/react`在React中配置带Schema的JSON编辑器,实现JSON代码补全功能。关键在于通过`monaco.languages.json.jsonDefaults.setDiagnosticsOptions`设置`fileMatch`属性,将JSON Schema与编辑器关联,并使用`ts-json-schema-generator`生成Schema。

Elliot Yang·
133 浏览

本文介绍了动态规划在解决最长回文子串问题中的应用。针对该问题,提供了两种解法:一种使用动态规划构建二维数组记录所有子串的回文状态,另一种采用中心扩散法,以每个字符为中心向外扩展。前者时空复杂度均为O(n^2),后者时间复杂度为O(n^2),空间复杂度为O(1)。

Elliot Yang·
104 浏览

本文档为 react-three-fiber 使用指南,记录了使用中遇到的问题。 针对 GLTF 模型 'materials' 属性缺失问题,推荐使用 `gltfjsx` 将 .glb 转换为 .tsx。 另外,Next.js 需要配置 `transpilePackages`。最后,建议自行管理 CDN 加载的资源,避免网络问题。

Elliot Yang·
162 浏览

本文总结了解决husky hooks失效、TS2451报错、Java Swagger operationId设置、Nginx add_header指令错误以及Git排除文件夹但包含特定文件等问题的方案。针对husky,检查配置和执行权限;TS2451,重新声明self类型并export;Swagger使用@ApiOperation()注解;Nginx用map指令替代if语句中的add_header;Git使用"!"排除特定文件。

Elliot Yang·
112 浏览

本文介绍了 TypeScript 拓展第三方类型声明的方法,并详细阐述了 Nginx 负载均衡策略(轮询、加权轮询、最小连接数、IP Hash、通用 Hash)及 upstream keepalive 的配置和优化,包括 keepalive 大小选择、proxy_http_version 和 proxy_set_header Connection 的必要性,以及 worker 进程、sendfile、gzip、SSL、proxy cache 等相关属性的优化。

Elliot Yang·
136 浏览

本文总结了 TypeScript 4.9 的新特性`satisfies`操作符,该操作符允许在不改变表达式类型推断的情况下,验证表达式是否匹配特定类型,解决了类型校验和类型信息丢失的矛盾。同时提及了布尔逻辑运算符和解决`TS2310`错误的方法。

Elliot Yang·
169 浏览

本文介绍了如何通过 `tsc` 命令从 JavaScript 文件生成 TypeScript 类型声明文件 (`.d.ts`),解决了 TypeScript 无法识别 JavaScript 模块类型的问题。同时,提到了 `content-visibility: auto` 引起的滚动条异常以及 `next.js` 的 `scrollRestoration` 失效问题。

Elliot Yang·
102 浏览

本文详解快速排序算法,该算法基于分治策略,通过选取主元并划分数组实现排序。文章讨论了主元选择策略(如随机主元、三数取中),并给出了TypeScript迭代版本的实现。传统递归快排存在堆栈溢出风险,迭代版本通过栈模拟解决了该问题。

Elliot Yang·
105 浏览

本文记录了Ant Design使用中遇到的问题及解决方案。包括:通过`useEffect`或销毁组件解决`form initialValues`无法从state设置问题;声明类型替换ProColumns优化提示;使用项目级插件和配置解决umi4/max中devServer问题;以及通过`beforeUpload`获取Upload组件的file content并使用FormData提交。

Elliot Yang·
103 浏览

本文探讨了反转链表问题。针对该问题,文章提供了两种解决方案:递归和双指针。递归方案的关键在于确定基本情况,而双指针方案则通过迭代改变节点指向来反转链表。文章给出了对应 TypeScript 代码示例。

Elliot Yang·
144 浏览

本文介绍了 TypeScript 中定义非空数组和元素非空数组的类型体操。`NonEmptyArray<T>` 类型确保数组至少包含一个元素。`NonNullableElement<T>` 类型则用于确保数组中的元素都不是可空类型。

Elliot Yang·
126 浏览

本文总结了常见的排序算法,包括选择排序、冒泡排序、插入排序、快速排序、堆排序、归并排序、计数排序和桶排序。针对每种算法,文章简述了其原理,并提供了 TypeScript 代码实现。这些算法在时间复杂度、空间复杂度和适用场景上各有特点。

Elliot Yang·
142 浏览

本文记录了作者开发中遇到的一些问题及解决方案。包括:node-fetch header值包含换行符错误;正则表达式兼容性问题;Jetbrains字体行高设置;Preview Tab使用习惯调整;graphql-code-generator 类型错误;.tsx文件中泛型箭头函数使用;Mac CapsLock切换输入法延迟;Git文件大小写敏感设置;GitHub Pages history mode;event.path未定义等问题,并提供了相应的解决办法或兼容方案。

Elliot Yang·
176 浏览

本文介绍了堆这种特殊的树形数据结构,它是一种基于数组的完全二叉树,常用于实现优先级队列。堆分为最大堆和最小堆,分别保证根节点为最大值或最小值。文章提供了最大堆的 TypeScript 实现,包括插入元素和弹出元素的 `heapifyUp` 和 `heapifyDown` 操作。

Elliot Yang·
142 浏览

本文是为面试准备的礼物,汇总了常见的JS手写题和八股文。手写题包括字符串转换对象、类型体操科里化、汉明距离总和、股票买卖、链表随机节点、二叉树迭代遍历、整数转罗马数字、字母异位词分组等。重点讨论了JS浮点数运算不精确的原因和解决方法,涉及IEEE 754标准、精度丢失等,并解释了Number.MAX_SAFE_INTEGER等特殊值。

Elliot Yang·
98 浏览

本文总结了 TypeScript 的实用特性,包括:利用 `infer` 关键字在条件类型中推断类型;`never` 类型表示不可观测的值;`keyof + in` 用于创建类型转换。同时,针对 pnpm 安装后类型提示缺失的问题,提出在 `d.ts` 文件中使用三斜线指令 `/// <reference types="..." />` 解决。最后解释了函数返回非 void 类型可以赋值给返回 void 类型的原因,强调 void 函数的关键在于返回值被忽略。

Elliot Yang·
145 浏览

本文档是作者记录的问题和解决方案集锦。包括iOS Chrome下`history.pushState`导致toolbar消失的bug,monaco-editor禁用overflow-x滚动条的方法,Safari的cookie处理问题,Nest.js的header错误,OpenWrt的DNS解析,TypeScript装饰器问题,以及Docker日志无颜色、Windows键盘Win键失效等问题的解决办法。

Elliot Yang·
131 浏览

动态(2)

E
Elliot Yang
公开

那些留在2023年的日子:五月

  • Docker 多阶段构建
  • TypeScript namespace 的妙用,在生成模版代码的时候可以免导入,直接使用 namespace 获取
  • BFS 和 DFS 的优缺点,fiber 为什么选择 DFS
浏览:154点赞:0
E
Elliot Yang
公开

NestJS 使用 @HttpCode 注解

使用 @HttpCode(200) 防止 @Post() 的状态码为 201

浏览:136点赞:0