2018/02/17

How to fix "Accessors are only available when targeting ECMAScript 5 and higher."


TypeScript で以下のようなコードを書いてコンパイルすると、"Accessors are only available when targeting ECMAScript 5 and higher.” というエラーが表示されます。

class User {
    private _name: string;
    constructor(name: string) {
        this._name = name;
    }
    sayHi(): void {
        console.log("hi! i am " + this._name);
    }
    get name() {
        return this._name;
    }
}

var tom = new User("Tom");
tom.sayHi();
console.log(tom.name)

これは getter/setter というアクセッサは ECMAScript5 以上でないと使用できないためです。ですので、main.ts というTypeScript のコードがあった場合、以下のようにコンパイルオプションを指定してあげることで問題を回避できます。

tsc main.ts -t es5

 なお、開発プロジェクトなどでは tsconfig.json を使うのがよさそうですね。

ECMAScript5 の対応状況は以下のサイトが参考になります。だいたいのブラウザはサポートしているようですね。

http://kangax.github.io/compat-table/es5/

 


スポンサーリンク


このエントリーをはてなブックマークに追加




Twitter ではブログにはない、いろんな情報を発信しています。


コメント

コメントを書く



プロフィール

  • 名前:fnya
    なんちゃってSE。

    フリーウェア、Webサービス開発のためにEntyまたはAmazonギフト券によるご支援をお願いしています。ご支援のほどよろしくお願いいたします。

    Twitter では、ブログでは取り上げない情報も公開しています。


    ブログについて

    このブログは、IT、スマートフォン、タブレット、システム開発などに関するさまざまな話題を取り上げたり、雑感などをつづっています。


    >>自作ツール
    >>運営サイト
    >>Windows 10 まとめ
    >>ブログ詳細

    Twitter のフォローはこちらから Facebook ページはこちら Google+ページはこちら RSSフィードのご登録はこちらから