Pup*_*kin 4 javascript typescript
据我所知,TypeScript允许为任何类型创建别名.如:
type MyNum = number;
var y: MyNum;
y = 33; // it's ok
Run Code Online (Sandbox Code Playgroud)
但是后续代码无效:
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'
Run Code Online (Sandbox Code Playgroud)
我错在哪里,我怎么能创建MyType的实例?
类型别名仅用于编译时,它们不会被转换为已编译的javascript代码.
您的第一个代码编译为:
var y;
y = 33;
Run Code Online (Sandbox Code Playgroud)
如你所见,这里没有任何内容MyNum.
但是,在您的第二个代码段中,您尝试将其MyType用作值而不仅仅是一种类型.
编译器不允许这样做,因为它在运行时MyType不存在,因为它编译为:
var dt = new MyType();
Run Code Online (Sandbox Code Playgroud)
类型别名,就像接口(和一般类型)仅用于编译一样,因此您不能将它们用作值.
要创建一个实例MyType,在这种情况下:
const dt1: MyType = {};
const dt2: MyType = new Object();
const dt3: MyType = Object.create({});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
367 次 |
| 最近记录: |