TypeScript - 运算符

你好,未来的程序员们!今天,我们将踏上一段激动人心的旅程,探索TypeScript运算符的世界。作为你友善的邻居计算机老师,我将引导你一步一步地完成这次冒险。所以,系好安全带,让我们开始吧!

TypeScript - Operators

什么是运算符?

在我们开始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()
类型断言(替代语法) (someValue).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