在ts中,interface和type有什么区别?

100 阅读1分钟

type特有的功能

  1. 最大的区别,interface的语法规定,必须写一个{},中间是键值对,因此无法定义基本数据类型别名,而type可以
type A = string
// 下面的代码肯定要给你一个Error 
interface A1 {string} 
  1. type可以声明联合类型.而interface不行
type A = {name: string} | {age: number}
  1. type可以声明元组
type A = [string, number, string, boolean]

interface特有的功能

interface声明的是接口,可以合并,type声明的类型别名不行

interface A {name: string}
interface A  {age: number}
const a:A = {
    name: 'nihao',
    age: 15
}

image.png

type B = {name: string}
type B = {age: number}

image.png

最后说一下我之前在其他人的帖子里看到的一个问题,即签名索引使用interface会报错

image.png
这是因为接口定义的类型不是固定的(接口声明合并),ts会认为接口无法分配