ts中interface和type的区别

简介: ts中interface和type的区别

type:类型别名;interface:接口,主要用于类型检查

差别

1:定义类型范围
interface只能定义对象类型。
type可以声明任何类型,基础类型、联合类型、交叉类型。

// 基础类型(相当于起别名)
type person = 'string';
// 联合类型
interface Dog {
   
  name:string
}
interface Cat {
   
  age:number
}
type animal = Dog | Cat;
// 元祖(指定某个位置具体是什么类型)
type animal = [Dog,Cat];
//交叉类型(多种类型的集合)
type animal = Dog & Cat;

2:合并声明
定义两个同名的type回报异常;
顶一个两个同名的interface会合并;

interface Dog {
   
  name:string;
}
interface Dog {
   
  age:number
}
// 合并为
interface Dog {
   
  name:string;
  age:number;
}

3:扩展性

interface可以使用extends,implements,进行扩展

// interface extends interface
interface Dog {
   
  name:string;
}
interface Cat extends Dog {
   
  age:number;
}
// interface extends type
type Dog= {
   name:string};
interface Cat extends Dog {
   
  age:number;
}

但type可以使用交叉类型&进行合并

// type & type
  type Dog = {
   name:string};
  type Cat = {
   age:number} & Dog;
  // tyep & interface
  interface Dog {
   
    name:string;
  }
  type Cat = {
   age:number} & interface;

4:可以使用typeof获取实例对象类型

const div = document.createElement('div');
type B = typeof div;
目录
相关文章
|
5月前
|
JavaScript 前端开发 编译器
在ts中const和readonly区别?
在ts中const和readonly区别?
60 1
|
6月前
|
JavaScript
TS中 type和interface的区别
TS中 type和interface的区别
501 0
|
6月前
|
JavaScript 编译器
TS中const和readonly的区别
TS中const和readonly的区别
112 0
|
Java
【ES异常】mapper [sortNum] of different type, current_type [long], merged_type [keyword]
【ES异常】mapper [sortNum] of different type, current_type [long], merged_type [keyword]
137 0
|
6月前
|
JavaScript 前端开发 索引
TS - interface和type的区别
TS - interface和type的区别
77 0
|
6月前
|
JavaScript API
Property ‘proxy‘ does not exist on type ‘ComponentInternalInstance | null‘.ts
Property ‘proxy‘ does not exist on type ‘ComponentInternalInstance | null‘.ts
|
JavaScript Java
ts - 接口
在 TypeScript 中,我们使用接口(Interfaces)来定义对象的类型。
|
JavaScript 前端开发
ts - 类
TypeScript支持JavaScript的新特性,比如支持基于类的面向对象编程。让我们创建一个Student类,它带有一个构造函数和一些公共字段。 注意类和接口可以一起工作。
【TS】ts中的类:class
【TS】ts中的类:class
124 0
【TS】ts中的类:class
|
JavaScript 索引
TS接口
TypeScript 中的接口是一种抽象结构,用于定义对象的类型。接口定义了对象应该包含的属性和方法,但不提供实现。