TypeScript 中 as const 是什麼

前端小智發表於2022-12-27

as const 是 TypeScript 中的一個用於修飾符,它可以被用來修改型別推斷的行為。

as const 修飾符用在變數宣告或表示式的型別上時,它會強制 TypeScript 將變數或表示式的型別視為不可變的(immutable)。這意味著,如果你嘗試對變數或表示式進行修改,TypeScript 會報錯。

例如:

const foo = ['a', 'b'] as const;
foo.push('c');  // TypeScript 會報錯,因為 foo 型別被宣告為不可變的

const bar = { x: 1, y: 2 } as const;
bar.x = 3;  // TypeScript 會報錯,因為 bar 型別被宣告為不可變的

as const 修飾符還可以用來修改物件字面量和陣列字面量的型別推斷。在這種情況下,as const 會強制 TypeScript 將物件字面量或陣列字面量的型別推斷為不可變的,即使沒有顯式地指定型別。

例如:

const foo = ['a', 'b'] as const;  // 等價於 const foo: ['a', 'b'] = ['a', 'b']

const bar = { x: 1, y: 2 } as const;  // 等價於 const bar: { x: 1, y: 2 } = { x: 1, y: 2 }

在這兩個例子中,TypeScript 會將 foobar 的型別推斷為不可變的陣列和物件,即使沒有顯式地指定型別。

總的來說,as const 修飾符是一種有用的工具,可以幫助我們提高程式碼的型別安全性,避免在不應該修改的地方進行修改。

編輯中可能存在的bug沒法實時知道,事後為了解決這些bug,花了大量的時間進行log 除錯,這邊順便給大家推薦一個好用的BUG監控工具 Fundebug

交流

有夢想,有乾貨,微信搜尋 【大遷世界】 關注這個在凌晨還在刷碗的刷碗智。

本文 GitHub https://github.com/qq449245884/xiaozhi 已收錄,有一線大廠面試完整考點、資料以及我的系列文章。

image.png

相關文章