TypeScript 中的 as 關鍵字

Shuvayan Ghosh Dastidar 2023年1月30日
  1. 在 TypeScript 中使用 as 關鍵字轉換型別
  2. 在 TypeScript 的型別謂詞中使用 as 關鍵字
TypeScript 中的 as 關鍵字

當物件的型別已知但編譯器不知道時,可以在這些情況下使用 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 鍵盤。

Shuvayan Ghosh Dastidar avatar Shuvayan Ghosh Dastidar avatar

Shuvayan is a professional software developer with an avid interest in all kinds of technology and programming languages. He loves all kinds of problem solving and writing about his experiences.

LinkedIn Website