TypeScript 中的 as 關鍵字
Shuvayan Ghosh Dastidar
2023年1月30日
當物件的型別已知但編譯器不知道時,可以在這些情況下使用 as
關鍵字來執行型別斷言以將所需的型別與物件相關聯。
它是一個 TypeScript 結構,不會影響轉編譯 JavaScript 程式碼。
在 TypeScript 中使用 as
關鍵字轉換型別
as
關鍵字可以轉換一個型別,該型別可以是預期型別的更具體或更不具體的版本。
interface User {
name : string
id : number
}
function getUser(){
let username : string = "Geralt";
return {
name : username,
id : 1
};
}
let user = getUser() as User;
通過這種方式,我們強制編譯器將 user
物件與 User
型別相關聯,以獲得更強大的自動完成和建議,從而帶來更好的開發體驗。
另一個用例是初始化陣列或稍後填充的空物件。
let user : User = {} as User;
let userArray : User[] = [] as User[];
如果沒有 as
關鍵字,TypeScript 會抱怨 {}
或 []
不匹配型別或缺少某些屬性。
在 TypeScript 的型別謂詞中使用 as
關鍵字
as
關鍵字在型別謂詞中。型別謂詞用作無型別物件或具有弱型別的物件的型別保護,例如兩個或多個型別的聯合。
interface Dog {
bark() : void;
}
interface Cat {
meow() : void;
}
function DogOrCat() : Dog | Cat {
let dog : Dog = {
bark(){
console.log("bark");
}
};
return dog;
}
function isDog( animal : Dog | Cat ) : animal is Dog {
return ( animal as Dog).bark !== undefined;
}
let animal = DogOrCat();
if (isDog(animal)){
(animal as Dog).bark()
}
animal is Dog
用作型別謂詞。
這樣,as
關鍵字可以用作型別保護和其他方式,例如 in
鍵盤。