TypeScript中可使用<=、<等比较运算符的操作数类型及文档查询
TypeScript中可使用比较运算符的操作数类型
支持直接比较的类型
- 原始类型:
- 数字(
number、bigint):按数值大小直接比较,比如5n <= 10n、3.14 <= 5均合法。 - 字符串(
string):按UTF-16编码的字符序列逐位比较,例如"apple" <= "banana"会返回true。 - 布尔值(
boolean):会被转换为数字(true对应1,false对应0)后比较,比如false <= true等价于0 <= 1,返回true。
- 数字(
- 特殊原始值:
null、undefined可参与比较,比较时会被转换为数字(null转0,undefined转NaN),例如null <= 0返回true,undefined <= 0返回false(因NaN与任何值比较结果都是false)。
不建议或不支持直接比较的类型
- 对象/数组类型:比较的是引用地址而非内容,比如
{a:1} <= {a:2}实际对比两个对象的内存地址,通常无业务意义。 - Symbol类型:直接使用比较运算符会触发TypeScript编译错误,比如
Symbol('a') <= Symbol('b')不被允许。
关于文档说明
TypeScript的比较运算符规则完全继承自JavaScript,官方文档中明确:<、>、<=、>=这类运算符会遵循JS的类型转换规则处理操作数。只要TypeScript编译阶段不报错,任意类型的a和b都能执行a < b,但仅原始类型的比较具备实际业务价值。
内容的提问来源于stack exchange,提问作者Alexey Romanov
相关产品推荐
相关产品推荐

