Skip to content

EcmaScript 4 syntaxΒ #106

@hydroper

Description

@hydroper

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<T> as T[]. In EcmaScript 4 you would be able to express Array.<T> 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:

var a:Array<Dynamic> = [];

typedef DoublePrecisionFloatingPoint = Float;

Here's an EcmaScript 4 version:

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 @:.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions