TS 类型断言

2023-12-21 20:40:35

Typescript允许你覆盖它的判断,并且能以任何你想要的方式分析它,这种机制被称为类型断言。

类型断言的两种方式:

1.as关键字

interface SquareConfig {
  color?: string;
  width?: number;
}

function createSquare(config: SquareConfig) {
  // ...
}

let mySquare = createSquare({ width: 100, opacity: 0.5 } as SquareConfig);

2.尖括号<>

let someValue: any = 'this is a string'
let strLength: number = (<string>someValue).length

一般情况建议使用as关键字来断言,尖括号断言在jsx中会有歧义,因此建议统一使用as。

注意:

类型断言只能够欺骗typescript编译器,无法避免运行时的错误。

类型断言和类型转换对比

类型断言只会影响typescript编译时的类型,类型断言在编译结果中会被删除。上述代码经过typescript编译后会变成:

let someValue = 'this is a string'
let strLength = someValue.length

而类型转换会改变变量的值:

let someValue: any = 'this is a string'
let strLength: number = (<string>someValue).length  // 类型断言
let someValue2 =  Boolean(someValue) // 类型转换

// someValue2 => true

类型断言和类型声明对比:

注意优先使用类型声明,代码更优雅,代码质量高

interface SquareConfig {
  color?: string;
  width?: number;
}

function createSquare(config: SquareConfig): SquareConfig{
  // ...
  return config
}

// 类型声明
const mySquare: SquareConfig = createSquare({ width: 100 });

// 类型转换
const mySquare2 = createSquare({ width: 100}) as SquareConfig

文章来源:https://blog.csdn.net/content6/article/details/135138286
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。