TypeScript类型断言

类型断言(Type Assertion)可以用来手动指定一个值的类型

自己理解,在联合类型的时候,只能访问联合类型的共有方法或者属性,但是这可能是不够用的。这个时候就要自己手动断言成某个类型。断言不是改变某个类型,不是类型转换。这个时候能让取到你断言成的类型的方法,更像是call或者apply。

function getLength(something: string | number): number {
    if (something.length) {
        return something.length;
    } else {
        return something.toString().length;
    }
}

// index.ts(2,19): error TS2339: Property 'length' does not exist on type 'string | number'.
//   Property 'length' does not exist on type 'number'.
// index.ts(3,26): error TS2339: Property 'length' does not exist on type 'string | number'.
//   Property 'length' does not exist on type 'number'.

上例中,获取 something.length 的时候会报错。
此时可以使用类型断言,将 something 断言成 string:

function getLength(something: string | number): number {
    if ((<string>something).length) {
        return (<string>something).length;
    } else {
        return something.toString().length;
    }
}

两种写法

<string>something
<类型>值

或者

something as string 
值 as 类型

类型断言不是类型转换,断言成一个联合类型中不存在的类型是不允许的

function toBoolean(something: string | number): boolean {
    return <boolean>something;
}

// index.ts(2,10): error TS2352: Type 'string | number' cannot be converted to type 'boolean'.
//   Type 'number' is not comparable to type 'boolean'.

原文地址:https://blog.csdn.net/weixin_41229588/article/details/95455865

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 类型断言(Type Assertion)可以用来手动指定一个值的类型。 语法 <类型>值 或者 值 as 类...
    呼呼哥阅读 22,375评论 0 7
  • 类型断言 类型断言(Type Assertion)可以用来手动指定一个值的类型。 语法 在 tsx 语法(Reac...
    浅夏晴空阅读 4,266评论 0 1
  • 类型断言 类型断言用于清楚地知道一个实体具有比它现有类型更确切的类型,其实就是在使用时(而非定义时)手动指定变量类...
    小黑兔斯基阅读 10,192评论 0 0
  • 有时候会遇到这样的情况,你会比TypeScript更了解某个值的详细信息。 通常这会发生在你清楚地知道一个实体具有...
    OnePiece索隆阅读 12,155评论 0 1
  • 类型断言 有时候你会遇到这样的情况,你会比TypeScript更了解某个值的详细信息。 通常这会发生在你清楚地知道...
    微志异阅读 3,483评论 0 0

友情链接更多精彩内容