接口和对象类型
对象的类型
interface Person {
age: number
name: string
}
const p: Person = {
age: 18,
name: 'mk'
}
// 重名interface 可以合并
interface A {
name: string
}
interface A {
age: number
}
const a: A = {
name: 'mk',
age: 18
}
// 继承
interface A{
name: string
}
interface B extends A{
age: number
}
let b:B = {
age: 18,
name: "mk"
}
可选属性 使用?操作符
interface Person {
age?: number
name: string
}
const p: Person = {
name: 'mk'
}
任意属性 [propName: string]
interface Person {
age?: number
name: string
[propName: string]: any
}
const p: Person = {
name: 'mk',
sex: 'boy'
}
只读属性 readonly
readonly 只读属性是不允许被赋值的只能读取
interface Person {
readonly sex: string
[propName: string]: any
}
const p: Person = {
sex: 'boy',
name: 'mk'
}
p.sex = 'girl'
需要注意的是,一旦定义了任意属性,那么确定属性和可选属性的类型都必须是它的类型的子集
添加函数
interface Person {
cb: () => void
}
const p: Person = {
cb: () => {
console.log('person')
}
}