RuntypeScript

Binary operators

Operator Applicable to Description
+ number literals addition
+ string literals concatenation
- number literals subtraction
* number literals multiplication
/ number literals division
% number literals modulo
== all types type equality
!= all types type inequality
> number literals comparison
>= number literals comparison
< number literals comparison
<= number literals comparison
and false or true logical and
or false or true logical or
| all types type union
& all types type intersection
extends all types type assignability

Unary operators

Operator Applicable to Description
- number literals negation
# tuples tuple length
~ all types deliteralization
not false or true logical not
decltype identifiers declared type

Operator priority

Priority Operators
0 or
1 and
2 < > <= >= == != extends
3 |
4 &
5 + - (binary)
6 * / %
7 - (unary) not # ~ decltype

Identifier

An identifier starts with a letter (as defined by Unicode Letter category) or underscore optionally followed by a sequence of letters, numbers (as defined by Unicode Letter, Decimal Number and Letter Number categories) and underscores, and is not one of the reserved keywords:

Keep in mind that there are also predefined global constants, and that shadowing is forbidden.

Function call

Function is called with a set of round brackets. Arguments are seperated by a comma. Leading comma is permitted.

Argument count has to match exactly or a runtime error will occur.

const add = fn (a: number, b: number) number { return a + b; };
println(add(1, 2));
println(add(1, 2, 3)); // wrong
println(add(1, "foo")); // also wrong

Indexing

Indexing is performed with a set of square brackets. You can index tuples with number literals or objects with string literals.

const array: number[] = [];
array[0] = 1;

const object: any = {};
object["foo"] = "bar";

Note that there is no shorthand notation (i.e. dot notation) for accessing object properties.

Literals

Check the documentation about type system to learn about literals.