前言: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 的大部分场景。