前端进阶之旅前端进阶之旅
基础篇
进阶篇
高频篇
精选篇
手写篇
原理篇
面经篇
自检篇
每日一题
  • 综合
    • 综合题型
    • 其他问题
    • 设计模式
    • 思维导图
    • 学习路线
  • 前端基础
    • HTTP
    • 浏览器
    • 计算机基础
  • 进阶学习
    • NPM工作流
    • Docker
    • Canvas
    • Node学习指南
    • 前端综合文章
  • 其他
    • Handbook
    • 职场话题
    • CSS可视化
小程序题库
公众号动态
博客动态
开发者导航
基础篇
进阶篇
高频篇
精选篇
手写篇
原理篇
面经篇
自检篇
每日一题
  • 综合
    • 综合题型
    • 其他问题
    • 设计模式
    • 思维导图
    • 学习路线
  • 前端基础
    • HTTP
    • 浏览器
    • 计算机基础
  • 进阶学习
    • NPM工作流
    • Docker
    • Canvas
    • Node学习指南
    • 前端综合文章
  • 其他
    • Handbook
    • 职场话题
    • CSS可视化
小程序题库
公众号动态
博客动态
开发者导航

TS之interface与type区别

首页
2019-09-28 16:25:24
Front-End
JavaScriptTypescript

# 相同之处

# 都可以描述一个对象或者函数

interface

interface User {
  name: string
  age: number
}

interface SetUser {
  (name: string, age: number): void;
}
@前端进阶之旅: 代码已经复制到剪贴板

type

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

type SetUser = (name: string, age: number)=> void;
@前端进阶之旅: 代码已经复制到剪贴板

# 都允许拓展(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; 
}
fe
  • 相同之处
    • 都可以描述一个对象或者函数
    • 都允许拓展(extends)
  • 不同之处
    • type 可以而 interface 不行
    • interface 可以而 type 不行

← 构建部署easy-mock服务React Native之设备真机调试 →