美文网首页
interface和type的区别

interface和type的区别

作者: Small_Song | 来源:发表于2022-11-22 14:05 被阅读0次

对typescript 有一定了解的,会发现 interface 和 type 很相似,类型定义上,很多时候,用两种方式都能实现。

三分钟直入主题, 除了语法不同外,interface和type主要有区别

相同点

1.都允许拓展(extends)

interface 和 type 都可以拓展,并且两者并不是相互独立的,也就是说 interface 可以 extends type, type 也可以 extends interface 。 虽然效果差不多,但是两者语法不同。

interface extends interface

interface Name { 
  name: string; 
}
interface User extends Name { 
  age: number; 
}

type extends type

type Name = { 
  name: string; 
}
type User = Name & { age: number  };

interface extends type

type Name = { 
  name: string; 
}
interface User extends Name { 
  age: number; 
}

type extends interface

interface Name { 
  name: string; 
}
type User = Name & { 
  age: number; 
}

不同点

1 类型别名可以用于其它类型 (联合类型、元组类型、基本类型(原始值)),interface不支持

type PartialPointX = { x: number };
type PartialPointY = { y: number };

// union(联合)
type PartialPoint = PartialPointX | PartialPointY;

// tuple(元祖)
type Data = [PartialPointX, PartialPointY];

//primitive(原始值)
type Name = Number;

// typeof的返回值
let div = document.createElement('div');
type B = typeof div;

2 interface 可以多次定义 并被视为合并所有声明成员 type 不支持

interface Point {
  x: number;
}
interface Point {
  y: number;
}

const point: Point = { x: 1, y: 2 };

3 type 能使用 in 关键字生成映射类型,但 interface 不行。

type Keys = 'firstname' | 'surname';

type DudeType = {
  [key in Keys]: string;
};

const test: DudeType = {
  firstname: 'Pawel',
  surname: 'Grzybek',
};

4 默认导出方式不同

// inerface 支持同时声明,默认导出 而type必须先声明后导出
export default interface Config {
  name: string;
}
// 同一个js模块只能存在一个默认导出哦
 type Config2 = {name: string}
  export default Config2

相关文章

  • 集合

    typeScript interface和type的区别interface 和 type 很相似,很多时候,用两种...

  • 看看TypeScript中interface和type间的区别(

    interface和type的区别是什么?本篇文章就来对比一下TypeScript中interface和type,...

  • ts 学习笔记

    1、interface和type的区别 interface可定义多次,对象会被合并;type不允许重复定义 int...

  • interface接口

    1、 interface和type类似,区别:interface定义对象形式,不可以定义变量形式,type可以,能...

  • type 和 interface的区别

    一句话总结 嘎嘎嘎 一般来说,如果不清楚什么时候用interface/type,能用 interface 实现,就...

  • interface和type的区别

    对typescript 有一定了解的,会发现 interface 和 type 很相似,类型定义上,很多时候,用两...

  • type 和 interface 的区别

    相同点 1.都可以用来描述一个对象或者函数 2.拓展(extends)与 交叉类型(Intersection Ty...

  • type和interface的区别

    相同点 都可以用来定义接口,即定义对象或者函数的形状 都可以实现继承,也可以相互继承,只不过形式不一样 type ...

  • type 和 interface 的区别

    相同点 1.都可以用来描述一个对象或者函数 2.拓展(extends)与 交叉类型(Intersection Ty...

  • TypeScript : interface(接口) 与 typ

    interface与type有什么区别?interface与type(类型别名)是有很多细微的区别的,在我们日常的...

网友评论

      本文标题:interface和type的区别

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