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:
- and
- break
- const
- continue
- decltype
- elif
- else
- extends
- fn
- if
- not
- or
- return
- sig
- var
- while
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.