当前位置: 首页 > article >正文

常用的TS类型工具

  1. 保留所有必需的属性
type GetRequired<T extends Record<string, any>> = {
  [K in keyof T as T[K] extends Required<T>[K] ? K : never]: T[K]
}

// 结果
type result = GetRequired<{ foo: number; bar?: string }>; // { foo: number }
type result1 = GetRequired<{ foo: undefined; bar?: undefined }>; // { foo: undefined }
  1. 保留可选属性
type GetOptional<T extends Record<string, any>> = {
  [K in keyof T as T[K] extends Required<T>[K] ? never : K]: T[K]
}

// 结果
type result = GetRequired<{ foo: number; bar?: string }>; // { bar?: string }
type result1 = GetRequired<{ foo: undefined; bar?: undefined }>; // { bar?: undefined }
  1. 获取必需属性的key
type RequiredKeys<T extends Record<string, any>> = keyof {
  [K in keyof T as T[K] extends Required<T>[K] ? K : never]: T[K]
}

// 结果
type result = RequiredKeys<{ a: number; b?: string }>; // 'a'
type result1 = RequiredKeys<{ a: undefined; b?: undefined; c: string; d: null }>; // 'a' | 'c' | 'd'
  1. 去除两端空白字符
type Space = ' ' | '\n' | '\t'
type Trim<S extends string> = S extends `${Space}${infer L}` | `${infer L}${Space}` ? Trim<L> : S;

// 结果
type result = Trim<' str'>; // ‘str’
type result = Trim<'str '>; // ‘str’
type result = Trim<'  str'>; // ‘str’
type result = Trim<'  str  '>; // ‘str’

http://www.kler.cn/a/534621.html

相关文章:

  • 如何安装PHP依赖库 更新2025.2.3
  • 消费kafka消息示例
  • 【怎么用系列】短视频戒除-2-(移动端)定时关闭抖音等短视频
  • git submodules
  • k8m 是一款轻量级、跨平台的 Kubernetes 仪表板
  • 《redis哨兵机制》
  • lambda表达式写java比较器
  • deepseek技术细节1
  • 线程池如何知道一个线程的任务已经执行完成
  • 调用腾讯云批量文本翻译API翻译srt字幕
  • Text2Sql:开启自然语言与数据库交互新时代(3030)
  • postgresql-COALESCE函数、NULLIF函数、NVL函数使用
  • 腾讯云 TI 平台部署与调用DeepSeek-R1大模型的实战指南
  • docker常用基础
  • 【极简模式】deepseek文案+剪映图文成片
  • 使用媒体查询确保网页能够在手机、平板和电脑上正常浏览
  • AI回答 | spring,springboot,spring MVC,servlet, spring web之间的联系与支持
  • Java面试:a+=a-=aa原理解析
  • 国产编辑器EverEdit - 工具栏说明
  • SpringBoot 整合 Mybatis:注解版
  • 深度学习|表示学习|卷积神经网络|NIN 相比普通 CNN|17
  • mysql慢查询工具explain
  • MySQL 的 binlog 作用
  • 11.10 LangChain对话记忆管理实战:从入门到生产级ConversationBufferMemory应用指南
  • 查看设备uuid
  • 【EdgeAI实战】(2)STM32 AI 扩展包的安装与使用