You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

TypeScript类型运算符优先级是怎样的?是否有完整优先级对照表?

TypeScript 类型运算符优先级说明

目前TypeScript官方未发布公开的完整类型运算符优先级官方文档,不过社区通过实测、校验TypeScript编译器源码已经整理出了经过验证的优先级排序,从高到低如下:

  • 第1级(最高优先级):括号(),可强制优先计算括号内的类型逻辑,优先级高于所有运算符
  • 第2级:单目类型运算符,包括keyof、typeof、readonly(数组/元组前缀修饰)、正负修饰符+readonly/-readonly、+?/-?

    对应你提到的示例:typeof map[T]中typeof优先级高于索引访问,所以实际等价于(typeof map)[T],而非直觉上的typeof (map[T])

  • 第3级:索引访问T[K]
  • 第4级:映射类型遍历声明[K in Type]
  • 第5级:函数/构造函数类型声明的参数定义部分
  • 第6级:函数类型返回值箭头=>,右结合
  • 第7级:条件类型关键字extends、配套的infer关键字(infer仅可在extends右侧子句使用,作用域跟随所属extends子句),条件类型整体为右结合

    示例:A extends B ? C extends D ? E : F : G 等价于 A extends B ? (C extends D ? E : F) : G

  • 第8级(最低优先级):联合类型|、交叉类型&,其中交叉类型&优先级高于联合类型|

如果编写复杂类型时对优先级没有把握,直接添加括号明确运算顺序是最稳妥的方案,不会产生额外的运行时开销,也能避免类型计算结果不符合预期。

内容的提问来源于stack exchange,提问作者Guerric P

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 10:24:00