TypeScript 运算符全面解析(四)

在 TypeScript 中,运算符是执行特定操作的基本工具。通过理解和掌握这些运算符,你可以更高效地编写和调试代码。本文将详细介绍 TypeScript 中的主要运算符,包括算术运算符、关系运算符、逻辑运算符、位运算符、赋值运算符、三元运算符和类型运算符。每种运算符都有其独特的用途和应用场景,我们将通过实际示例来帮助你更好地理解和应用它们。

算术运算符

算术运算符用于执行基本的数学运算,如加法、减法、乘法、除法和取模等。假设我们有一个变量 y,其值为 5,下面的表格展示了各种算术运算符的使用方法和结果:

运算符描述示例x 的结果y 的结果
+加法x = y + 275
-减法x = y - 235
*乘法x = y * 2105
/除法x = y / 22.55
%取模(余数)x = y % 215
++自增x = ++y66
x = y++56
--自减x = --y44
x = y--54

实例

let num1: number = 10;
let num2: number = 2;
let res: number = 0;

res = num1 + num2;
console.log("加: " + res);

res = num1 - num2;
console.log("减: " + res);

res = num1 * num2;
console.log("乘: " + res);

res = num1 / num2;
console.log("除: " + res);

res = num1 % num2;
console.log("余数: " + res);

num1++;
console.log("num1 自增运算: " + num1);

num2--;
console.log("num2 自减运算: " + num2);

运行上述代码,输出结果如下:

加: 12
减: 8
乘: 20
除: 5
余数: 0
num1 自增运算: 11
num2 自减运算: 1

关系运算符

关系运算符用于比较两个值之间的关系,返回一个布尔值(true 或 false)。假设我们有两个变量 num1 和 num2,其值分别为 5 和 9,下面的表格展示了各种关系运算符的使用方法和结果:

运算符描述示例返回值
==等于num1 == 8false
num1 == 5true
!=不等于num1 != 8true
>大于num1 > 8false
<小于num1 < 8true
>=大于或等于num1 >= 8false
<=小于或等于num1 <= 8true

实例

let num1: number = 5;
let num2: number = 9;

console.log("num1 的值为: " + num1);
console.log("num2 的值为: " + num2);

let res: boolean = num1 > num2;
console.log("num1 大于 num2: " + res);

res = num1 < num2;
console.log("num1 小于 num2: " + res);

res = num1 >= num2;
console.log("num1 大于或等于 num2: " + res);

res = num1 <= num2;
console.log("num1 小于或等于 num2: " + res);

res = num1 == num2;
console.log("num1 等于 num2: " + res);

res = num1 != num2;
console.log("num1 不等于 num2: " + res);

运行上述代码,输出结果如下:

num1 的值为: 5
num2 的值为: 9
num1 大于 num2: false
num1 小于 num2: true
num1 大于或等于 num2: false
num1 小于或等于 num2: true
num1 等于 num2: false
num1 不等于 num2: true

逻辑运算符

逻辑运算符用于组合多个条件表达式,返回一个布尔值。常见的逻辑运算符有 &&(逻辑与)、||(逻辑或)和 !(逻辑非)。假设我们有两个变量 avg 和 percentage,其值分别为 20 和 90,下面的表格展示了各种逻辑运算符的使用方法和结果:

运算符描述示例
&&逻辑与(avg > 50 && percentage > 80) 为 false
逻辑或(avg > 50percentage > 80) 为 true
!逻辑非!(avg > 50 && percentage > 80) 为 true

实例

let avg: number = 20;
let percentage: number = 90;

console.log("avg 值为: " + avg + ", percentage 值为: " + percentage);

let res: boolean = (avg > 50) && (percentage > 80);
console.log("(avg > 50) && (percentage > 80): " + res);

res = (avg > 50) || (percentage > 80);
console.log("(avg > 50) || (percentage > 80): " + res);

res = !(avg > 50) && (percentage > 80);
console.log("!(avg > 50) && (percentage > 80): " + res);

运行上述代码,输出结果如下:


avg 值为: 20 , percentage 值为: 90
(avg > 50) && (percentage > 80): false
(avg > 50) || (percentage > 80): true
!(avg > 50) && (percentage > 80): true

短路运算符

短路运算符是指在某些情况下,当第一个条件已经决定了最终结果时,不会继续评估后续的条件。例如:

  • && 运算符:只有当左右两个表达式都为 true 时,结果才为 true。如果第一个表达式为 false,则不会评估第二个表达式。
  • || 运算符:只要其中一个表达式为 true,结果即为 true。如果第一个表达式为 true,则不会评估第二个表达式。

实例

let a: number = 10;
let result: boolean = (a < 10 && a > 5); // 第一个表达式为 false,跳过第二个表达式
console.log(result); // 输出 false

result = (a > 5 || a < 10); // 第一个表达式为 true,跳过第二个表达式
console.log(result); // 输出 true

位运算符

位运算符用于对二进制数进行位级别的操作。常见的位运算符有按位与(&)、按位或(|)、按位异或(^)、按位非(~)、左移(<<)、右移(>>)和无符号右移(>>>)。假设我们有两个变量 a 和 b,其值分别为 2 和 3,下面的表格展示了各种位运算符的使用方法和结果:

运算符描述示例类似于结果十进制
&按位与x = 5 & 10101 & 000100011
|按位或x = 5 | 10101 | 000101015
~按位非x = ~5~01011010-6
^按位异或x = 5 ^ 10101 ^ 000101004
<<左移x = 5 << 10101 << 1101010
>>右移x = 5 >> 10101 >> 100102
>>>无符号右移x = 2 >>> 10010 >>> 100011

实例

let a: number = 2; // 二进制 10
let b: number = 3; // 二进制 11
let result: number;

result = a & b;
console.log("(a & b) => " + result);

result = a | b;
console.log("(a | b) => " + result);

result = a ^ b;
console.log("(a ^ b) => " + result);

result = ~b;
console.log("(~b) => " + result);

result = a << b;
console.log("(a << b) => " + result);

result = a >> b;
console.log("(a >> b) => " + result);

result = a >>> 1;
console.log("(a >>> 1) => " + result);

运行上述代码,输出结果如下:

(a & b) => 2
(a | b) => 3
(a ^ b) => 1
(~b) => -4
(a << b) => 16
(a >> b) => 0
(a >>> 1) => 1

赋值运算符

赋值运算符用于将一个值赋给一个变量。常见的赋值运算符有简单赋值(=)、加法赋值(+=)、减法赋值(-=)、乘法赋值(*=)、除法赋值(/=)和取模赋值(%=)。假设我们有两个变量 a 和 b,其值分别为 12 和 10,下面的表格展示了各种赋值运算符的使用方法和结果:

运算符示例实例a 的结果
=a = ba = ba = 10
+=a += ba = a + ba = 20
-=a -= ba = a - ba = 10
*=a *= ba = a * ba = 100
/=a /= ba = a / ba = 10
%=a %= ba = a % ba = 0

实例

let a: number = 12;
let b: number = 10;

a = b;
console.log("a = b: " + a);

a += b;
console.log("a += b: " + a);

a -= b;
console.log("a -= b: " + a);

a *= b;
console.log("a *= b: " + a);

a /= b;
console.log("a /= b: " + a);

a %= b;
console.log("a %= b: " + a);

运行上述代码,输出结果如下:

a = b: 10
a += b: 20
a -= b: 10
a *= b: 100
a /= b: 10
a %= b: 0

三元运算符 (?)

三元运算符是一种简洁的条件表达式,用于根据条件选择不同的值。其语法如下:

condition ? valueIfTrue : valueIfFalse
  • condition:条件表达式
  • valueIfTrue:如果条件为 true,返回该值
  • valueIfFalse:如果条件为 false,返回该值

实例

let num: number = -2;
let result: string = num > 0 ? "大于 0" : "小于 0,或等于 0";
console.log(result);

运行上述代码,输出结果如下:

小于 0,或等于 0

类型运算符

类型运算符用于检查变量的类型。常见的类型运算符有 typeof 和 instanceof。

  • typeof:返回变量的类型字符串,如 "number"、"string"、"boolean" 等。
  • instanceof:检查对象是否属于某个类的实例。

实例

let num: number = 10;
let str: string = "Hello";

console.log(typeof num); // 输出 "number"
console.log(typeof str); // 输出 "string"

class MyClass {}
let obj = new MyClass();

console.log(obj instanceof MyClass); // 输出 true

总结

通过本文的介绍,你应该对 TypeScript 中的各种运算符有了全面的了解。算术运算符用于基本的数学运算,关系运算符用于比较值,逻辑运算符用于组合条件表达式,位运算符用于位级别的操作,赋值运算符用于赋值,三元运算符用于简洁的条件选择,类型运算符用于类型检查。希望这些知识能帮助你在实际开发中更高效地编写和调试代码。