JSX (プログラミング言語)

JSX は、DeNAによって開発されたウェブアプリケーション向けのプログラミング言語である。ECMAScript 4から影響を受けた構文を持ち、静的型付けなのが特徴。ウェブブラウザ組み込みのスクリプト言語であるJavaScriptのデメリットを解消することを目的に作られている。またJSXのソースコードは最適化されたJavaScriptコードに変換して実行され、同等のJavaScriptプログラムと比較して10%以上高速になるとされるhttp://www.slideshare.net/kazuho/jsx-optimizer。

なお、Reactで用いられるJavaScriptの拡張構文JSXや、Adobe社製ソフトウェアに搭載されているJavaScriptマクロは、同じく「JSX」という名前がつけられているが、全くの別物である。

言語仕様

JSXの特徴は以下の点が挙げられる。

 クラス構文のサポート
 モジュール機構
 テンプレート（総称型）のサポート
 関数オーバーロードのサポート
 アロー関数式
 レキシカルスコープをもつthis
 デフォルト引数
 最適化で削除されるassert文
 プロファイラ（スマートフォンでも利用可能）
 source mapのサポート
 nullを許容しないプリミティブ型(number, boolean, string)

例 

Hello worldプログラムは、以下のとおりである。JSXプログラムは _Main.main(:string[]) : void がアプリケーションのエントリポイントとなる。

 class _Main {
     static function main(args : string[]) : void {
         log "Hello, world!";
     }
 }

JSXでは、継承関係にないクラスに総称的な操作をするためにはインターフェイスを使う。インターフェイスを使ったプログラムは以下のようになる。

// an example for class inheritance and interfaces

interface Flyable {
    abstract function fly() : void;
}

abstract class Animal {
    function eat() : void {
      log "An animal is eating!";
    }
}

class Bat extends Animal implements Flyable {
    override function fly() : void {
        log "A bat is flying!";
    }
}

abstract class Insect {
}

class Bee extends Insect implements Flyable {
    override function fly() : void {
        log "A bee is flying!";
    }
}

class _Main {
    static function main(args : string[]) : void {
        // fo bar
        var bat = new Bat();

        var animal : Animal = bat; // OK. A bat is an animal.
        animal.eat();

        var flyable : Flyable = bat; // OK. A bat can fly
        flyable.fly();

        // for Bee
        var bee = new Bee();

        flyable = bee; // A bee is also flyable
        flyable.fly();
    }
}

関連項目
 JavaScript
 ECMAScript
 ActionScript
 Haxe
 Dart
 TypeScript

 脚注 

 外部リンク 


Category:ディー・エヌ・エー
Category:オブジェクト指向言語
Category:JavaScriptを生成する言語