2016-06-29 22 views
2

タイプを明示的に定義し、そのインスタンスを作成したいとします。次のコードは、問題Typescriptで型の新しいインスタンスを作成するには?

import * as Immutable from "immutable"; 

// this works. 
let map = new Immutable.Map<string, number>(); 

// neither works below. 
type MapType = Immutable.Map<string, number>; 
let map = new MapType(); 
let map = new MapType; 
let map = MapType(); 
+0

これはできません。エイリアスは 'Immutable.Map'部分(ジェネリック型argsなし)にのみ定義できます。 –

答えて

3

あなたはそれが唯一のコンパイル時のための型を定義する場合でMapTypeのようなものはありませんので、(それはJSコンパイルされたファイルの一部ではありませんので、new MapTypeが動作することはできませんを説明しますjs)。

あなたはこれを行うことができます。

let ctor = Immutable.Map; 
let map = new ctor<string, number>(); 

またはこの:

let ctor: { new(): Map<string, number> } = Immutable.Map; 
let map = new ctor(); 

ctortypeが、実際の変数ではありません両方のケースでは、コンパイラによって削除されていないものを、コンパイラはこれを翻訳します:

let ctor: { new(): Map<string, number> } = Immutable.Map; 

これに翻訳します:

let ctor = Immutable.Map; 
関連する問題