美文网首页
类型断言

类型断言

作者: 苍老师的眼泪 | 来源:发表于2022-08-24 10:37 被阅读0次

类型断言用于指定更具体的类型:
比如:

let the_canvas_element = document.getElementById('the_canvas_element')

以上代码对于 ts 来说它只知道 the_canvas_element 变量是一个 Element 类型的元素或者 null。
但是很显然在这种情况下我们知道该元素是一个 HTMLCanvasElement,于是我们可以通过类型断言指定更具体的元素:
方法一:用 as + 更具体的类型

let the_canvas_element = document.getElementById('the_canvas_element') as HTMLCanvasElement

方法二:

let the_canvas_element = <HTMLCanvasElement>document.getElementById('the_canvas_element')

类型断言在编译时被删除,不会影响代码运行时行为.
ts 只允许类型断言转化为更具体或更宽松的类型,这个规则可以防止不可能的强制类型转换.

类型断言的实际使用场景:

function request_data(url:string, method: 'GET' | 'POST') {
    console.log(url + method)
}

const obj = {
    url: 'http://backend.com',
    method: 'GET'
}

request_data(obj.url, obj.method)

以上代码会提示:类型“string”的参数不能赋给类型“"GET" | "POST"”的参数。
我们需要显示地告诉 ts: 虽然 obj.method 的类型的 string 类型的变量,但是我们很确定 method 的只会是 ‘GET' | 'POST' 之中的一个:

method: 'GET' as 'GET' | 'POST'

另一种方法:

const obj = {
    url: 'http://backend.com',
    method: 'GET'
} as const

一个对象 as const 之后,它里面的属性(或属性的属性一直递归下去)不能修改了

!非空断言:

function show(n: number | null) {
    console.log(n!.toFixed(2))
}

show(20)

当show的参数真的为 null 的时候,就会抛出运行时异常

相关文章

  • 聊聊golang的类型断言

    序 本文主要研究一下golang的类型断言 类型断言 断言x不为nil且x为T类型 如果T不是接口类型,则该断言x...

  • TypeScript入门基础(类型断言、内置对象)

    类型断言 类型断言(Type Assertion)可以用来手动指定一个值的类型。语法 <类型>值 或 值 as 类...

  • 类型断言

    类型断言可以用来手动指定一个值的类型,即允许变量从一种类型更改为另一种类型

  • 类型断言

    类型断言用于指定更具体的类型:比如: 以上代码对于 ts 来说它只知道 the_canvas_element 变量...

  • TS基础(八)类型断言

    类型断言可以用来手动指定一个值得类型语法 :值 as 类型 或者<类型>值在tsx中必须使用 前者 类型断言用途 ...

  • 随笔37号20181023-go断言

    类型断言 类型断言用于提取接口的底层值(Underlying Value)。 在语法i.(T)中,接口i的具体类型...

  • TypeScript类型断言

    类型断言 类型断言(Type Assertion)可以用来手动指定一个值的类型。 语法 在 tsx 语法(Reac...

  • 1-类型断言

    类型断言适用对象 类型断言只能用于interface变量。 未实现相应接口的方法的断言,编译会失败 int32没有...

  • Typescript踩坑点

    1,类型断言类型断言更像是类型的选择,而不是类型转换举例: 代码中要返回参数的长度,但是 length 可以是字符...

  • go 接口

    空接口 断言 我们知道interface{}可以保存任意类型的数,所以我们要通过断言查询是什么类型断言的对象是空接口

网友评论

      本文标题:类型断言

      本文链接:https://www.haomeiwen.com/subject/gjyogrtx.html