个人网站: 【紫陌】【笔记分享网】
想寻找共同学习交流、共同成长的伙伴, 请点击【前端学习交流群】
在 TypeScript中,type 和 interface有些相似,都可以给类型命名并通过该名字来引用表示的类型。不过它们之间使用场景有点不一样。
type类型使用范围更广, 接口类型只能用来声明对象
type MyNumber = number
type MyId = number | string
但是使用interface就不可以定义非对象类型(语法错误)
在声明对象时, interface可以多次声明
interface Person {
name: string
age: number
}
interface Person {
address: string
}
const personInfo: Person = {
name: 'zimo',
age: 18,
address: '北京'
}
interface 可以重复的对某个接口来定义属性和方法; 而type定义的是别名,别名是不能重复的;
interface支持继承的,type不支持
interface IPerson {
name: string
age: number
}
interface IZimo extends IPerson {
address: string
}
const preson: IZimo = {
name: "zimo",
age: 20,
address:'北京'
}
interface可以被类实现
class Person implements IPerson {}
总结: 如果是非对象类型的定义使用type, 如果是对象类型的声明那么使用interface