一、 Interface 接口 定义Object的类型
- 对对象的属性和方法进行类型定义
- Duck Typing (鸭子类型)
- Interface 是JavaScript中不存在的概念,所以Interface 不会被转换成JavaScript,Interface 只是用来做类型的静态检查
// ts 建议在变量名前,加一个I,告诉别人这是Interface类型
interface IPerson {}
// 定义一个接口
interface Person {
name:string;
age: number;
}
公式: interface + 变量名 + 大括号 + 属性名 + 数据类型
// 约束接口Person的实例xiao 必须 和接口Person的数据类型一致
let xiao: Person = {
name: 'xiao',
age: 24
}
// xiao1报错,因为xiao1实例少了一个属性
let xiao1: Person = {
name: 'xiao'
}
// id: 1报错,因为xiao1实例多了一个属性
let xiao1: Person = {
name: 'xiao',
age: 24,
id: 1
}
// 把属性定义为可选,使用问号?
interface Person {
name:string;
age?: number;
}
// 成功,因为age是可选属性
let xiao: Person = {
name: 'xiao',
}
// 只读属性,readonly ,只能在声明实例的时候赋值,其他时候不可以修改,作用相当于const
interface Person {
readonly id: number;
name: string,
age?: number,
}
// 声明一个Person 实例
let xiao: Person = {
id: 1,
name: 'xiao',
age: 20
}
xiao.id = 123 // id会报错,因为id只可以读取,不可以编辑
参考视频:慕课网课程