TypeScript 运算符

栏目: typescript 发布时间:2024-11-01

typescript 作为 JavaScript 的超集,继承了 JavaScript 的大部分运算符,并添加了一些与类型系统相关的特性。运算符用于执行各种算术、赋值、比较、逻辑、位运算等。以下是 TypeScript 中常用运算符的详细介绍。

一、算术运算符

算术运算符用于执行数学运算,如加法、减法、乘法、除法和取余等。

  • 加法 (+): let sum = 5 + 3;
  • 减法 (-): let difference = 5 - 3;
  • 乘法 (*): let product = 5 * 3;
  • 除法 (/): let quotient = 5 / 3; // 结果为浮点数
  • 取余 (%): let remainder = 5 % 3; // 结果为余数
  • 指数 (**): let power = 2 ** 3; // ES2016 引入,计算 2 的 3 次方

二、赋值运算符

赋值运算符用于将值赋给变量。

  • 简单赋值 (=): let a = 5;
  • 加法赋值 (+=): let a = 5; a += 3; // 等同于 a = a + 3;
  • 减法赋值 (-=): let a = 5; a -= 3;
  • 乘法赋值 (*=): let a = 5; a *= 3;
  • 除法赋值 (/=): let a = 5; a /= 3;
  • 取余赋值 (%=): let a = 5; a %= 3;

三、比较运算符

比较运算符用于比较两个值,并返回布尔值。

  • 等于 (==): 检查值是否相等(不进行类型转换比较时可能不准确)
  • 严格等于 (===): 检查值和类型是否都相等
  • 不等于 (!=): 检查值是否不相等(不进行类型转换比较时可能不准确)
  • 严格不等于 (!==): 检查值和类型是否都不相等
  • 大于 (>): 检查左侧值是否大于右侧值
  • 小于 (<): 检查左侧值是否小于右侧值
  • 大于等于 (>=): 检查左侧值是否大于或等于右侧值
  • 小于等于 (<=): 检查左侧值是否小于或等于右侧值

四、逻辑运算符

逻辑运算符用于布尔值的组合。

  • 逻辑与 (&&): 当且仅当两个操作数都为真时返回真
  • 逻辑或 (||): 当至少一个操作数为真时返回真
  • 逻辑非 (!): 将操作数的布尔值取反

五、位运算符

位运算符对二进制位进行操作。

  • 按位与 (&)
  • 按位或 (|)
  • 按位异或 (^)
  • 按位非 (~)
  • 左移 (<<)
  • 右移 (>>)
  • 无符号右移 (>>>)

六、三元运算符

三元运算符是条件运算符,用于根据条件返回不同的值。

let condition = true;
let result = condition ? 'True' : 'False';

七、类型运算符(TypeScript 特有)

TypeScript 引入了一些与类型相关的运算符,这些运算符在编译时起作用,而不是在运行时。

  • 类型断言 (as): 用于将变量断言为特定类型。
    let someValue: any = "this is a string";
    let strLength: number = (someValue as string).length;
    
  • 类型保护(通过 typeofinstanceof: 用于在运行时检查变量的类型。
    function isString(value: any): value is string {
      return typeof value === "string";
    }
    
  • 条件类型(T extends U ? X : Y: 根据条件选择类型。
    type Message<T> = T extends string ? string : never;
    
  • 非空断言运算符 (!): 告诉 TypeScript 编译器某个值一定不是 nullundefined
    function processString(str?: string) {
      // 使用非空断言运算符
      const length = str!.length;
    }
    

八、其他运算符

  • 可选链(?.: 访问嵌套对象属性时,如果某个属性不存在则不会抛出错误,而是返回 undefined
    const obj = { a: { b: 2 } };
    console.log(obj.a?.b?.toString()); // "2"
    console.log(obj.x?.y?.toString()); // undefined
    
  • 空值合并运算符(??: 当左侧操作数为 nullundefined 时,返回右侧操作数。
    let foo = null ?? 'default string';
    console.log(foo); // 输出 "default string"
    

九、使用运算符的注意事项

  • 确保运算符适用于操作数的类型。
  • 注意类型转换,特别是使用 ==!= 时。
  • 合理使用类型断言和类型保护,以避免类型错误。

通过掌握这些运算符,你可以更有效地在 TypeScript 中编写代码,并利用类型系统的优势来提高代码的质量和可维护性。

本文地址:https://www.tides.cn/p_typescript-operators