ts的类型兼容性

简介: ts的类型兼容性

你要的我有就可以,没有就不行

接口兼容性

interface Person1 {
  name: string
}
interface Person2 {
  name: string;
  age: number;
}

let obj1: Person1 = {
  name: 'xxx'
}

let obj2: Person2 = {
  name: 'xxx',
  age: 18
}

obj2 = obj1 // 错误:无法赋值,因为缺少属性,多了不影响,但是少了属性绝对不行

obj1 = obj2 是可以的

基本类型的兼容性

let num1: number
let num2: number | string

num1 = 10;
num2 = 'xxx'

num1 = num2 // 错误:无法赋值,因为缺少类型,多了不影响,但是少了类型绝对不行

num2 = num1 是可以的

类的兼容性

class Animal {
  name: string
}
class Bird extends Animal {
  age: number
}

let a: Animal;
let b = Bird;

b = a  // 错误:无法赋值,因为缺少类型,多了不影响,但是少了类型绝对不行

a = b 是可以的

函数的兼容性

type Func = (a: number, b: number) => number;

let sum: Func;
function f1 (a: number, b: number):void {
 // todo
}

sum = f1 // 错误:无法赋值,因为返回值类型不同

除了对比参数,还要对比返回值

type Func = (a: number, b: number) => number;

let sum: Func;
function f1 (a: number, b: number, c: number):number {
  return a
}

sum = f1 // 错误:无法赋值,多了参数不行,但是少参数可以
type GetPerson = () => {name: string, age: number};
let getPerson :GetPerson;
function g1 () {
  return {name: 'xxx'}
}
function g2 () {
  return {name: 'xxx', age: 18}
}
function g3 () {
  return {name: 'xxx', age: 18, sex: 1}
}

// getPerson = g1; 报错
// getPerson = g2; 正常
// getPerson = g3 正常

参数可以传自己和自己的父类,返回值可以传自己和自己的子类

相关文章
|
5月前
|
JavaScript
ts的内置工具
ts的内置工具
99 0
|
JavaScript 前端开发
ts -函数的类型
在 JavaScript 中,有两种常见的定义函数的方式——函数声明(Function Declaration)和函数表达式(Function Expression)
|
JavaScript 前端开发
TS基础用法
TS基础用法
94 0
|
JavaScript 编译器 开发者
ts的接口是什么有什么作用
ts的接口是什么有什么作用
365 0
TS在实际开发中的使用
TS在实际开发中的使用
79 0
|
JavaScript 索引
ts扩展类型
接口 interface 含义:是指对协定进行定义的引用类型。其他类型实现接口,以保证它们支持某些操作。接口指定必须由类提供的成员或实现它的其他接口。与类相似,接口可以包含方法、属性、索引器和事件作为成员
ts扩展类型
|
JavaScript 前端开发
typescript(ts) 类型兼容性 分析
ts 类型系统在检查普通字面量是严格检查的,是完全匹配的,如果有一点不一样,ts 都会提出错误,原因嘛,个人觉得你既然使用了类型检查,对于普通的原生数据类型肯定是严格检查,有一点都报错
typescript(ts) 类型兼容性 分析
ts重点学习103-对象类型得兼容性
ts重点学习103-对象类型得兼容性
76 0
ts重点学习103-对象类型得兼容性
ts重点学习105-函数类型得兼容性
ts重点学习105-函数类型得兼容性
82 0
ts重点学习105-函数类型得兼容性