blob: 7b79f9324216dbc7848c6e3bd00881eebe3d0c7c (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
|
Operators
The operators of JSX are the same to those in JavaScript (ECMA-262 3rd edition) except for the following changes.
types of the operands accepted by the operators are more restrictive
logical operators (&& ||) return boolean
binary ?: operator has been introduced (to cover the use of || in JavaScript to return non-boolean values)
introduction of the as operator
delete is a statement instead of an operator
The table below lists the operators supported by JSX.
Table 1. List of Operators by Precedence
Operator Returned Type Operand Type(s)
(x)[1] typeof x
func(...) return type of the function
obj.prop typeof obj.prop obj: any object type
array[index] Nullable.<T> array: Array.<T>
index: number
map[key] Nullable.<T> map: Map.<T>
key: string
x++
x-- typeof x number or int
obj instanceof type boolean obj: any object type
type: a Class, Interface, or Mixin
x as type[2]
x as __noconvert__ type[3] type
++x
--x typeof x number or int
+x
-x typeof x number or int
~x int number or int
! x boolean any
typeof x string variant
x * y
x % y number or int[4] number or int
x / y number number or int
x + y
x - y number or int[4] number or int
x + y string string
x << y
x >> y
x >>> y int number or int
x < y
x<= y
x > y
x >= y boolean number, int, string[5]
x in y boolean x: string
y: Map.<T>
x == y
x != y boolean any except variant[5]
x & y int number or int
x ^ y int number or int
x | y int number or int
x && y boolean any
x || y boolean any
x ? y : z typeof y any[6]
x ?: y typeof x any[5]
x = y typeof x any[7]
x op[8]= y typeof x same as op
x, y typeof y any
grouping operator
cast operator
cast operator (without run-time type check)
int is returned if both operands are int
types of x and y should be equal, or either should be convertible to the other
types of y and z should be equal, or either should be convertible to the other
type of y should be convertible to type of x
any of: * / % + - << >> >>> & ^ |
|