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