据我所知,TypeScript允许为任何类型创建别名。如:
type MyNum = number;
var y: MyNum;
y = 33; // it's ok
但是后续代码无效:
type MyType = Object;
const dt = new MyType(); // here is an error: 'MyType only refers to a type, but is being used as a value here'
我错在哪里,如何创建MyType实例?
答案 0 :(得分:7)
类型别名仅用于编译时,它们不会被转换为已编译的javascript代码。
您的第一个代码编译为:
var y;
y = 33;
如你所见,这里没有关于MyNum
的内容。
但是,在您的第二个代码段中,您尝试将MyType
用作值而不仅仅是一种类型。
编译器不允许这样做,因为在运行时MyType
不存在,因为它编译为:
var dt = new MyType();
类型别名,就像接口(和一般类型)仅用于编译一样,因此不能将它们用作值。
要创建MyType
的实例,在这种情况下:
const dt1: MyType = {};
const dt2: MyType = new Object();
const dt3: MyType = Object.create({});