うごく生ゴミプログラマの備忘録

うごく生ゴミ 〜再臨〜

Visual Studio Code で TypeScript2.0を書いたらハマったこと

前回の記事から2ヶ月?くらいたっていて、気がついたらTypeScript2.0がリリースされていた…

ので、Visual Studio Code で TypeScript2.0 を書こうとしたらハマったところと解決策のメモ。 まぁ、普段は IntelliJ IDEA で書いているだけど。

まず、以下のようなコードを TypeScript で書いて、Visual Studio Code のタスクランナーでコンパイル使用としたら怒られた。

'use strict';


class Singleton {

    /** instanceを保持します。 */
    private static instance: Singleton;

    /**
     * コンストラクタ
     * TypeScript2.0からconstructor に private が指定できるようになった。
     */
    private constructor() {
        // do nothing.
    }

    /**
     * インスタンス取得メソッド
     * @return {Singleton} Singletonのインスタンス
     */
    public static getInstance() : Singleton {
        if (!Singleton.instance) {
            Singleton.instance = new Singleton();
        }
        return Singleton.instance;
    }

    public sayHello() : void {
        console.log('Hello World');
    }

}

Singleton.getInstance().sayHello();

どこで怒られたかっていうと、コンストラクタのところ。

    /**
     * コンストラクタ
     * TypeScript2.0からconstructor に private が指定できるようになった。
     */
    private constructor() {
        // do nothing.
    }

コンストラクタに private が指定できるようになったのは TypeScript2.0 からで、どうもVisual Studio Code が内部的に使っているTypeScriptは1.8らしい。

なので、Visual Studio Code 側の設定を変えてあげる必要がある。「ワークスペース設定」を開き…

f:id:jBellTree:20160926005606p:plain

以下のように、ワークスペースの設定でTypeScriptを自分がインストールしたものを指定してあげる。

f:id:jBellTree:20160926005842p:plain

すると、

f:id:jBellTree:20160926012505p:plain

うまくいった!めでたしめでたし。