// interface 常用于约束定义返回的数据,interface中定义了,则使用该interface的变量不可以多一个或者少一个
// interface res {
// name: string // 不需要逗号隔行
// value: number
// }
// let result:res = {
// name: 'gg',
// value: 123
// }
// 重名和extends,都是将interface进行融合
// interface res {
// value: number
// }
// interface res extends res1 {
// name: string
// }
// interface res1 {
// age: number
// }
// 此时res定义的类型是同名+继承的所有属性
// const result:res = {
// name: 'gg',
// value: 123,
// age: 11
// }
// 返回的数据中有不确定或者不需要,可以定义确定的类型后,其他使用通配符定义
// interface res {
// name: string
// [propName:string]:any //propName是自定义的名字,指定为any方便不确定的类型
// }
// const result:res = {
// name: 'gg', // 确定被定义的,不可缺失,否则报错
// value: 123, // 匹配通配符
// age: 11 // 匹配通配符
// }
// 不确定是否会返回该类型使用?
// interface res {
// name: string
// age?:number
// }
// // 由于age是?,所以此时不定义age也不会报错
// const result:res = {
// name: 'gg'
// }
// 要求不能被修改,使用readonly
// interface res {
// name: string
// readonly age: number
// }
// let result:res = {
// name: 'gg',
// age: 11
// }
// result.age = 11 // 报错,age是readonly,不可修改
// 函数定义
interface res {
cb: ()=> boolean
}
const result:res = {
cb: () => { return true}
}
interface Fn {
(name:string):number[]
}
const F:Fn = function(name:string) {
return [1]
}