TypeScript文档地址: Interface
主要功能和描述
:::info
主要功能:对对象的形状(shape) 进行描述
:::
:::warning
描述:鸭子类型 Duck Typing
意思是:如果某个东西长得像鸭子,像鸭子一样游泳,一样嘎嘎叫,那么它就可以被看成是一只鸭子。
它是动态编程语言的一种对对象推断的策略。它更关注对象能如何被使用,而不是对象的类型本身
:::
注意:因为interface是不存在于js中的概念,所以ts在编译以后,interface是不会被转换过去的
声明方法
// 定义一个接口person
interface Person{
name: string;
age: number;
}
// 接着定义一个变量chan,它的类型是Person。
// 这样,我们就约束了chan的形状必须和Person接口一致
// 需要注意的是,多一个或者少一个参数都不行
let chan: Person = {
name: 'chenYongRen',
age: 20
}
// 如果我们不希望完全匹配一个形状,那么可以用可选属性?
interface Person {
name: string;
age?: number;
}
// 这样age就可以可加可不加。
let chan: Person = {
name: 'chenYongRen'
}
// 如果我们希望一个属性只能在初始化时赋值
// 不能再次赋值,可以使用属性readonly定义只读属性
interface Person {
readonly id: number;
name: string;
age?: number;
}
let chan: Person = {
id: 1,
name: 'chenYongRen',
age: 20
}
chan.id = 2; // 报错
// 无法分配到 "id" ,因为它是只读属性