什么是类型兼容?

简介: 什么是类型兼容?

类型的兼容

TypeScript 的类型存在兼容关系,某些类型可以兼容其他类型。

type T = number | string;

let a: number = 1;
let b: T = a;

上面示例中,变量a和b的类型是不一样的,但是变量a赋值给变量b并不会报错。这时,我们就认为,b的类型兼容a的类型。


TypeScript 为这种情况定义了一个专门术语。如果类型A的值可以赋值给类型B,那么类型A就称为类型B的子类型(subtype)。在上例中,类型number就是类型number|string的子类型。

TypeScript 的一个规则是,凡是可以使用父类型的地方,都可以使用子类型,但是反过来不行。

let a: "hi" = "hi";
let b: string = "hello";

b = a; // 正确
a = b; // 报错

上面示例中,hi是string的子类型,string是hi的父类型。所以,变量a可以赋值给变量b,但是反过来就会报错。


之所以有这样的规则,是因为子类型继承了父类型的所有特征,所以可以用在父类型的场合。但是,子类型还可能有一些父类型没有的特征,所以父类型不能用在子类型的场合。


来源:

目录
相关文章
|
15天前
|
SQL 关系型数据库 MySQL
|
18天前
|
SQL 关系型数据库 MySQL
关系型数据库mysql跨平台兼容性
【6月更文挑战第13天】
60 4
|
2月前
|
Android开发 C++
so兼容32位和64位
在Android开发中遇到32位`xxx.so`动态库在64位设备上运行失败的问题,导致应用崩溃。错误提示因缺少64位版本的库。尝试创建`arm64-v8a`目录并复制库文件后,依然崩溃,因为库本身是32位。解决方案是在`build.gradle`中添加配置,指定支持的ABI滤镜,并在`gradle.properties`中设置`android.useDeprecatedNdk=true`,以解决兼容性问题。
47 7
|
2月前
|
JavaScript 前端开发 编译器
TypeScript基础(三)扩展类型-接口和类型兼容性
在TypeScript中,接口(Interface)用于定义对象的结构和类型。它是一种约定,用于描述对象应该具有哪些属性和方法。接口可以提高代码的可读性、可维护性和可重用性。 接口的定义使用关键字interface,后面跟着接口的名称和一对花括号。在花括号中,可以定义接口的属性、方法和其他成员。
54 0
|
9月前
|
JavaScript 前端开发
带你读《现代TypeScript高级教程》十二、类型兼容:结构化类型(1)
带你读《现代TypeScript高级教程》十二、类型兼容:结构化类型(1)
|
9月前
|
JavaScript 安全
带你读《现代TypeScript高级教程》十二、类型兼容:结构化类型(2)
带你读《现代TypeScript高级教程》十二、类型兼容:结构化类型(2)
drawio支持
drawio支持
514 0
drawio支持
视频支持
视频支持
62 0
|
消息中间件 存储 关系型数据库
支持近似计算
支持近似计算
83 0