Typescript的編譯器挺有趣,如果使用const聲明對象,它會大量使用基本類型來聲明,看下面的例子:
這個最簡單的聲明,Typescript會推斷出age的類型是number,你可以對它賦任何數值。
但如果我們使用const聲明這個變量,它的類型會變成什么?
可以看到 30 就變成它的類型,而且再也無法更改。字符串也一樣,會有這種限制:
userName使用const定義,它的類型就被聲明成"George",而且無法更改。
數組
如果對一個數組使用const定義,情況就有點不一樣了,看下面的例子。它只是定義了cars為字符串數組類型,你還是可以對數組進行各種操作,比如插入一個數組元素之類的。
如果你想限定死數組,那就需要加 as const, 如下:
大家可以觀察它的類型,push操作也會編譯失敗。
對象
對象和數組差不多,如果直接const定義,你還是可以直接修改對象的字段,除非加入as const,這樣它會給每個字段加入readonly, 并且使用基本值作為其類型。
比如: