如何在Typescript中创建新的类型实例?

时间:2016-06-29 12:45:55

标签: 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();

1 个答案:

答案 0 :(得分:3)

当你只为编译时定义一个类型时,它不会成为已编译的js文件的一部分,因此new MapType无法工作(因为没有这样的在js中为MapType的东西。

你可以这样做:

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

或者这个:

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

在这两种情况下,ctor不是type,而是实际变量,编译器不会删除它,但编译器会将其翻译出来:

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

进入这个:

let ctor = Immutable.Map;