TypeScript和类型别名

4
据我所知,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的实例?

const dt : MyType = {}? - evolutionxbox
1个回答

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({});

你能展示一下OP应该做什么的例子吗? - evolutionxbox
2
@evolutionxbox 当然没问题。谢谢。 - Nitzan Tomer

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接