簡體   English   中英

TypeScript和類型別名

[英]TypeScript and type aliases

據我所知,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的實例?

類型別名僅用於編譯時,它們不會被轉換為已編譯的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({});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM