TypeScript 运算符
什么是运算符
运算符定义了将在数据上执行的某些函数。运算符作用的数据称为操作数。考虑下面的表达式−
7 + 5 = 12
在这里,数值7、5和12是 操作数 ,而+和=是 运算符 。
TypeScript中的主要运算符可以分为−
- 算术运算符
- 逻辑运算符
- 关系运算符
- 位运算符
- 赋值运算符
- 三元/条件运算符
- 字符串运算符
- 类型运算符
算术运算符
假设变量a和b的值分别为10和5。
显示例子
运算符 | 描述 | 示例 |
---|---|---|
+ (加法) |
返回操作数的求和结果 | a + b 是 15 |
- (减法) |
返回数值的差值 | a - b 是 5 |
* (乘法) |
返回数值的乘积 | a * b 是 50 |
/ (除法) |
执行除法操作并返回商 | a / b 是 2 |
% (模运算) |
执行模运算操作并返回余数 | a % b 是 0 |
++ (自增) |
将变量的值增加一 | a++ 是 11 |
-- (自减) |
将变量的值减少一 | a-- 是 9 |
关系运算符
关系运算符测试或定义两个实体之间的关系类型。关系运算符返回一个布尔值,即True/False。
假设 A 的值为10,B 的值为20。
显示示例
操作符 | 描述 | 例子 |
---|---|---|
> |
大于 | (A > B) 是 False |
< |
小于 | (A < B) 是 True |
>= |
大于等于 | (A >= B) 是 False |
<= |
小于等于 | (A <= B) 是 True |
== |
相等 | (A == B) 是 false |
!= |
不等 | (A != B) 是 True |
逻辑运算符
逻辑运算符用于组合两个或多个条件。逻辑运算符也返回一个布尔值。假设变量A的值为10,变量B的值为20。
显示例子
运算符 | 描述 | 示例 |
---|---|---|
&& (与) |
当所有指定的表达式都返回true时,该运算符返回true | (A > 10 && B > 10) 是False |
|| (或) |
当至少有一个指定的表达式返回true时,该运算符返回true | (A > 10 || B >10) 是True |
! (非) |
该运算符返回表达式结果的反义。例如:!(>5) 返回false |
!(A >10 ) 是True |
位运算符
假设变量A = 2,B = 3
显示示例
运算符 | 描述 | 示例 |
---|---|---|
& (按位与) |
对其整数参数的每个位执行布尔与操作。 | (A & B) 是 2 |
| (按位或) |
对其整数参数的每个位执行布尔或操作。 | (A | B) 是 3 |
^ (按位异或) |
对其整数参数的每个位执行布尔异或操作。异或表示操作数一为真或操作数二为真,但不能同时为真。 | (A ^ B) 是 1 |
~ (按位取反) |
是一元运算符,通过反转操作数中的所有位来操作。 | (~B) 是 -4 |
<< (左移) |
将第一个操作数中的所有位向左移动指定的位数。新位被填充为零。将一个值向左移动一位等同于将其乘以2,向左移动两位等同于乘以4,依此类推。 | (A << 1) 是 4 |
>> (右移) |
二进制右移运算符。左操作数的值向右移动右操作数指定的位数。 | (A >> 1) 是 1 |
>>> (带零的右移) |
此运算符类似于 >> 运算符,只是左侧移入的位始终为零。 | (A >>> 1) 是 1 |
赋值运算符
展示示例
运算符 | 描述 | 例子 |
---|---|---|
= (简单赋值) |
将右操作数的值赋给左操作数 | C = A + B 将 A + B 的值赋给 C |
+= (加法赋值) |
将右操作数加到左操作数上,并将结果赋给左操作数 | C += A 等价于 C = C + A |
-= (减法赋值) |
将右操作数从左操作数中减去,并将结果赋给左操作数 | C -= A 等价于 C = C – A |
*= (乘法赋值) |
将右操作数与左操作数相乘,并将结果赋给左操作数 | C *= A 等价于 C = C * A |
/= (除法赋值) |
将左操作数除以右操作数,并将结果赋给左操作数 |
注意 − 相同的逻辑也适用于位运算符,它们将变为<<=、>>=、>>=、&=、|=
和^=
。
其他运算符
取反运算符 (-)
改变一个值的符号。让我们举一个例子。
var x:number = 4
var y = -x;
console.log("value of x: ",x); //outputs 4
console.log("value of y: ",y); //outputs -4
在编译时,它会生成以下的JavaScript代码。
//Generated by typescript 1.8.10
var x = 4;
var y = -x;
console.log("value of x: ", x); //outputs 4
console.log("value of y: ", y); //outputs -4
它将产生以下输出−
value of x: 4
value of y: -4
字符串运算符:连接运算符(+)
当应用于字符串时,+运算符将第二个字符串添加到第一个字符串。以下示例帮助我们理解这个概念。
var msg:string = "hello"+"world"
console.log(msg)
在编译时,它会生成以下JavaScript代码。
//Generated by typescript 1.8.10
var msg = "hello" + "world";
console.log(msg);
它将产生以下输出−
helloworld
连接操作不会在字符串之间添加空格。多个字符串可以在一条语句中进行连接。
条件运算符 (?)
此运算符用于表示条件表达式。条件运算符有时也被称为三元运算符。其语法如下所示:
Test ? expr1 : expr2
- Test − 指条件表达式
-
expr1 − 如果条件为真,则返回的值
-
expr2 − 如果条件为假,则返回的值
让我们来看下面的代码 −
var num:number = -2
var result = num > 0 ?"positive":"non-positive"
console.log(result)
第2行检查变量 num 中的值是否大于零。如果 num 设置为大于零的值,则返回字符串“positive”,否则返回字符串“non-positive”。
编译后,将生成以下JavaScript代码。
//Generated by typescript 1.8.10
var num = -2;
var result = num > 0 ? "positive" : "non-positive";
console.log(result);
上述代码片段将生成以下输出 –
non-positive
类型操作符
typeof 操作符
这是一个一元操作符。该操作符返回操作数的数据类型。看下面的例子:
var num = 12
console.log(typeof num); //output: number
在编译时,它将生成以下JavaScript代码。
//Generated by typescript 1.8.10
var num = 12;
console.log(typeof num); //output: number
它将产生以下输出−
number
instanceof
这个运算符可以用来测试对象是否属于指定的类型。在章节 classes 中讨论了 instanceof 运算符的使用。