type 与 interface 的区别

前言:TS代码中很容易看到interface和type的身影,两者都是申明类型,但使用却有所不同。

一.基本概念

1.type(类型别名)

用来给类型起新名字,使用type创建类型别名,可用来表示:基本类型,对象类型,联合类型,数组和交集。

// 1.type
type Username = string            //基本数据类型
type Userage = string | number    //联合数据类型

type Person = {           //对象类型
    name: string,
    age: number
}

let user: Person = {     //用Person类型,有提示
    name: "小明",
    age: 18
}

2.interface(接口)

interface只能描述对象类型,语法格式也不同,如下

// 2.interface
interface Person1 {
    name: string,
    age: number
}

二.相同点

都可以用来描述object和funtion,如下

// 相同点,描述object和funtion
type Person11 = {                                   // 对象
    name: string,
    age: number
}
type fn11 = (name: string, age: number) => void    //函数
 
interface Person22 {                               //对象
    x: string,
    y: number
}
interface fn22 {
    (x: string, y: number): void                  //函数
}

三.不同之处

type可以声明:基本类型,对象类型,联合类型,数组和交集。

interface声明:对象,函数,合并

合并↓

// interface可以合并
interface str1 {
    name: string
}
interface str2 {
    age: number
}
// 实际的test类型
// test{
//     name: string,
//     age: number
// }

四,推荐用法

如果想保持代码统一,还是可选择使用 type。通过上面的对比,type 其实可涵盖 interface 的大部分场景。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值