TypeScript 运算符全面解析(四)
- 编程语言
- 3天前
- 6热度
- 0评论
在 TypeScript 中,运算符是执行特定操作的基本工具。通过理解和掌握这些运算符,你可以更高效地编写和调试代码。本文将详细介绍 TypeScript 中的主要运算符,包括算术运算符、关系运算符、逻辑运算符、位运算符、赋值运算符、三元运算符和类型运算符。每种运算符都有其独特的用途和应用场景,我们将通过实际示例来帮助你更好地理解和应用它们。
算术运算符
算术运算符用于执行基本的数学运算,如加法、减法、乘法、除法和取模等。假设我们有一个变量 y,其值为 5,下面的表格展示了各种算术运算符的使用方法和结果:
| 运算符 | 描述 | 示例 | x 的结果 | y 的结果 |
|---|---|---|---|---|
| + | 加法 | x = y + 2 | 7 | 5 |
| - | 减法 | x = y - 2 | 3 | 5 |
| * | 乘法 | x = y * 2 | 10 | 5 |
| / | 除法 | x = y / 2 | 2.5 | 5 |
| % | 取模(余数) | x = y % 2 | 1 | 5 |
| ++ | 自增 | x = ++y | 6 | 6 |
| x = y++ | 5 | 6 | ||
| -- | 自减 | x = --y | 4 | 4 |
| x = y-- | 5 | 4 |
实例
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 == 8 | false |
| num1 == 5 | true | ||
| != | 不等于 | num1 != 8 | true |
| > | 大于 | num1 > 8 | false |
| < | 小于 | num1 < 8 | true |
| >= | 大于或等于 | num1 >= 8 | false |
| <= | 小于或等于 | num1 <= 8 | true |
实例
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 > 50 | percentage > 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 & 1 | 0101 & 0001 | 0001 | 1 |
| | | 按位或 | x = 5 | 1 | 0101 | 0001 | 0101 | 5 |
| ~ | 按位非 | x = ~5 | ~0101 | 1010 | -6 |
| ^ | 按位异或 | x = 5 ^ 1 | 0101 ^ 0001 | 0100 | 4 |
| << | 左移 | x = 5 << 1 | 0101 << 1 | 1010 | 10 |
| >> | 右移 | x = 5 >> 1 | 0101 >> 1 | 0010 | 2 |
| >>> | 无符号右移 | x = 2 >>> 1 | 0010 >>> 1 | 0001 | 1 |
实例
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 = b | a = b | a = 10 |
| += | a += b | a = a + b | a = 20 |
| -= | a -= b | a = a - b | a = 10 |
| *= | a *= b | a = a * b | a = 100 |
| /= | a /= b | a = a / b | a = 10 |
| %= | a %= b | a = a % b | a = 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 中的各种运算符有了全面的了解。算术运算符用于基本的数学运算,关系运算符用于比较值,逻辑运算符用于组合条件表达式,位运算符用于位级别的操作,赋值运算符用于赋值,三元运算符用于简洁的条件选择,类型运算符用于类型检查。希望这些知识能帮助你在实际开发中更高效地编写和调试代码。