1.在typescript
中接口可用于表示javascript
的对象类型
1.接口用关键字interface
定义,描述了对象的形状,通常对象名称首字母大写
interface Family {
father:string,
mother:string,
i:string
}
1.接口属性可分为,必需属性,可选属性,任意属性,可读属性4种
2.必需属性为直接声明的属性
interface Family {
father:string,
mother:string,
i:string
}
3.可选属性使用?
表示,在实现这个接口时,不一定要这个属性
interface Family {
father:string,
mother:string,
i:string
pet?:string
}
4.任意属性允许一个接口有任意的属性
interface Family {
father:string,
mother:string,
i:string,
pet?:string,
[key:string]:string
}
5.只读属性,使用readonly
表示,只要在定义时赋值,不能被修改
interface Family {
father:string,
mother:string,
i:string,
pet?:string,
[propName:string]:string,
readonly id:string
}
6.索引签名的方式可以帮助我们定义一些灵活、动态的对象类型,是在 TypeScript
中定义不确定属性的对象类型的常用方法之一
interface Option {
[key: string]: any
}
5.注意事项:
(1)一个接口实现的变量,一定要含有必需属性
(2)可以含有也可以不含有可选属性
(3)当含有任意属性时,其他属性的值类型一定是任意属性的子集
(4)一个接口只能有一个任意属性,如果接口中有多个类型的属性,则可以在任意属性中使用联合类型
(5)只读属性只能在创建的时候被赋值
1.在ts
中,接口可以使用关键字extends
继承另一个接口,继承后的接口拥有自己独有的属性和继承接口的属性
interface Animal {
name: string;
age: number;
eat(food: string): void;
}
interface Dog extends Animal {
breed: string;
bark(): void;
}
1.使用接口定义变量时,变量的形状必须和接口的形状保持一致,不可增加多余的属性,也不可以少属性
interface Family {
father:string,
mother:string,
i:string
pet?:string
}
let lilysHome:Family ={
father:'tom',
mother:'marry',
i:'lily',
}
1.注意接口不能设置默认值
2.注意,对于一个可选属性,在操作时一定要判断是否存在,当不存在时返回的是undefined
,对于对原本属性的一些操作,用在undefined
上可能会报错