HaxeFoundation / HaxeFoundation/haxe-evolution

EcmaScript 4 syntax

Open
#106 1 comment 3 reactions 0 assignees View on GitHub
Dominant language
No language data
Stars
119
Forks
56
PR merge metrics
No merged PRs in 30d

Description

Haxe has some subtle differences from TypeScript and EcmaScript 4 (inexistent) syntax.

- For aliasing types, TypeScript choose to use the context keyword `type` rather than a reserved word `typedef`. EcmaScript 4 too was going to use `type` (whether in ES4 it was going to be contextual or not I don't remember, though the EcmaScript 4 reference interpreter is available in archive.org).
- In TypeScript, you can express `Array` as `T[]`. In EcmaScript 4 you would be able to express `Array.` as `[T]`. To me, it seems like the EcmaScript 4 syntax for specifying array types in brackets is cryptic and readable at the same time.
- Both TypeScript and EcmaScript 4 express tuple types with the same syntax, consisting of two or more element types.
- In TypeScript, the dynamic type is written `any`. In EcmaScript 4, it's written `*`.

More specifically, in these languages, `type` is reserved when it's followed or preceded by another identifier or reserved word, so it doesn't break compatibility.

Here's a Haxe version:

```haxe
var a:Array = [];

typedef DoublePrecisionFloatingPoint = Float;
```

Here's an EcmaScript 4 version:

```ts
var a:[*] = [];

type DoublePrecisionFloatingPoint = Number;
```

I think it'd be interesting if Haxe supported the same ES4 syntax for clarity, considering it'd not break compatibility. It doesn't break macros, does it? After all, Haxe was inspired by ES4.

Another thing I didn't mention is that the decorator syntax of ES4 used brackets, not `@:`.

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.