TypeScript - 运算符
你好,未来的程序员们!今天,我们将踏上一段激动人心的旅程,探索TypeScript运算符的世界。作为你友善的邻居计算机老师,我将引导你一步一步地完成这次冒险。所以,系好安全带,让我们开始吧!
什么是运算符?
在我们开始TypeScript运算符的奥德赛之前,让我们先了解一下运算符到底是什么。可以将运算符视为告诉计算机执行特定数学或逻辑操作的特殊符号。它们就像是编程中的魔法棒,以各种方式转换和组合我们的数据。
例如,当你在代码中看到一个"+"符号时,它不仅仅是一个花哨的装饰。它是一个运算符,告诉计算机将事物相加。酷吧?
算术运算符
让我们从算术运算符开始。这些运算符可能对你来说最熟悉,因为它们与你在数学课中使用的方法相似。
下面是TypeScript中的算术运算符表格:
运算符 | 描述 | 示例 |
---|---|---|
+ | 加法 | 5 + 3 |
- | 减法 | 7 - 2 |
* | 乘法 | 4 * 6 |
/ | 除法 | 8 / 2 |
% | 求余(余数) | 9 % 4 |
++ | 自增 | let x = 5; x++; |
-- | 自减 | let y = 3; y--; |
让我们看看它们的使用:
let a: number = 10;
let b: number = 5;
console.log(a + b); // 输出: 15
console.log(a - b); // 输出: 5
console.log(a * b); // 输出: 50
console.log(a / b); // 输出: 2
console.log(a % b); // 输出: 0
let c: number = 7;
c++;
console.log(c); // 输出: 8
let d: number = 3;
d--;
console.log(d); // 输出: 2
在这个示例中,我们正在对我们的变量执行各种算术操作。模运算符(%)可能对一些人是新的。它给出除法的余数。所以,10 % 5 是 0,因为10除以5没有余数。
关系运算符
接下来,我们有关系运算符。这些运算符用于比较值,并根据比较结果返回true或false。
下面是关系运算符的表格:
运算符 | 描述 | 示例 |
---|---|---|
== | 等于 | 5 == 5 |
!= | 不等于 | 5 != 3 |
> | 大于 | 7 > 3 |
< | 小于 | 2 < 8 |
>= | 大于或等于 | 5 >= 5 |
<= | 小于或等于 | 4 <= 4 |
让我们看看它们是如何工作的:
let x: number = 5;
let y: number = 10;
console.log(x == y); // 输出: false
console.log(x != y); // 输出: true
console.log(x > y); // 输出: false
console.log(x < y); // 输出: true
console.log(x >= 5); // 输出: true
console.log(y <= 10); // 输出: true
这些运算符在你需要根据比较值在代码中做决策时非常有用。
逻辑运算符
逻辑运算符用于确定变量或值之间的逻辑。它们就像是编程中的福尔摩斯,帮助我们从多个条件中推断出真相。
下面是逻辑运算符的表格:
运算符 | 描述 | 示例 |
---|---|---|
&& | 逻辑与 | true && false |
|| | 逻辑或 | true || false |
! | 逻辑非 | !true |
让我们看看它们的使用:
let isRaining: boolean = true;
let isWarm: boolean = false;
console.log(isRaining && isWarm); // 输出: false
console.log(isRaining || isWarm); // 输出: true
console.log(!isRaining); // 输出: false
在这个示例中,&&
仅在两个条件都为真时返回true。||
只要至少有一个条件为真就返回true。!
否定布尔值。
位运算符
现在,我们正在进入更高级的领域。位运算符在数字的二进制表示上执行操作。别担心这个听起来很复杂 - 我们会逐步解释!
下面是位运算符的表格:
运算符 | 描述 | 示例 |
---|---|---|
& | 位与 | 5 & 3 |
| | 位或 | 5 | 3 |
^ | 位异或 | 5 ^ 3 |
~ | 位非 | ~5 |
<< | 左移 | 5 << 1 |
>> | 右移 | 5 >> 1 |
让我们看一个例子:
let a: number = 5; // 二进制: 0101
let b: number = 3; // 二进制: 0011
console.log(a & b); // 输出: 1 (二进制: 0001)
console.log(a | b); // 输出: 7 (二进制: 0111)
console.log(a ^ b); // 输出: 6 (二进制: 0110)
console.log(~a); // 输出: -6 (二进制: 1010在二进制补码中)
console.log(a << 1); // 输出: 10 (二进制: 1010)
console.log(a >> 1); // 输出: 2 (二进制: 0010)
这些运算符在数字的二进制(基数为2)表示上工作。它们在低级编程和某些算法中特别有用。
赋值运算符
赋值运算符用于给变量赋值。它们就像是编程世界中的搬运工,将值放入它们适当的“家”(变量)。
下面是赋值运算符的表格:
运算符 | 描述 | 示例 |
---|---|---|
= | 赋值 | x = 5 |
+= | 加并赋值 | x += 3 |
-= | 减并赋值 | x -= 2 |
*= | 乘并赋值 | x *= 4 |
/= | 除并赋值 | x /= 2 |
%= | 求余并赋值 | x %= 3 |
让我们看看它们的使用:
let x: number = 10;
x += 5; // 等同于: x = x + 5
console.log(x); // 输出: 15
x -= 3; // 等同于: x = x - 3
console.log(x); // 输出: 12
x *= 2; // 等同于: x = x * 2
console.log(x); // 输出: 24
x /= 4; // 等同于: x = x / 4
console.log(x); // 输出: 6
x %= 4; // 等同于: x = x % 4
console.log(x); // 输出: 2
这些运算符是简写,使我们的代码更简洁、易读。
杂项运算符
TypeScript还有一些其他不属于前面类别的运算符。
下面是一些杂项运算符的表格:
运算符 | 描述 | 示例 |
---|---|---|
?: | 条件(三元) | condition ? expr1 : expr2 |
, | 逗号 | let x = (1, 2, 3) |
delete | 删除属性 | delete obj.property |
typeof | 变量类型 | typeof x |
void | 评估表达式并返回undefined | void(0) |
让我们看看三元运算符的例子,它非常方便:
let age: number = 20;
let canVote: string = age >= 18 ? "Yes" : "No";
console.log(canVote); // 输出: "Yes"
这是一种简写方式,用于编写if-else语句。如果条件(age >= 18)为真,它返回"Yes",否则返回"No"。
类型运算符
最后,让我们看看一些TypeScript特有的运算符,它们帮助我们处理类型。
下面是类型运算符的表格:
运算符 | 描述 | 示例 |
---|---|---|
typeof | 获取变量类型 | typeof x |
instanceof | 检查对象是否是类的实例 | obj instanceof Class |
as | 类型断言 | (someValue as string).toUpperCase() |
类型断言(替代语法) | ( |
让我们看看一个例子:
let x: any = "Hello, TypeScript!";
let length: number = (x as string).length;
console.log(length); // 输出: 20
class Animal {}
class Dog extends Animal {}
let myPet = new Dog();
console.log(myPet instanceof Animal); // 输出: true
在这个例子中,我们使用类型断言告诉TypeScript我们知道x
是一个字符串,尽管它被类型化为any
。我们还使用instanceof
检查myPet
是否是Animal
类的实例。
就这样,朋友们!我们已经穿越了TypeScript运算符的土地。记住,熟能生巧,所以不要害怕在你的代码中试验这些运算符。快乐编码!
Credits: Image by storyset