ts中的接口
属性修饰符一览:
修饰符名 | 作用 |
---|---|
readonly | 定义只读属性 |
? | 定义可选属性 |
接口一览:
接口类型 | 特点 |
---|---|
普通接口 | 普通类型 |
索引接口 | 允许定义任意多的键值对 |
类类型接口 | 对类中的内容进行约束, 使用 implements 关键字实现接口 |
继承接口 | 继承父接口的属性 |
函数接口 | 约束函数的参数和返回值 |
普通类型接口
interface Person {
name: string
readonly age: number定义只读属性
sex?: string//定义可选属性
}
const o: Person = {
name: 'a',
age: 1
}
function a(text:Person){
console.log(text)
}
a(o)
console.log(o) // {name: 'a', age: 1}
o.name='b'
console.log(o) // {name: 'b', age: 1}
o.age = 2//编译报错:只读属性不能修改
索引类型接口
当不确定对象中有哪些属性时, 可以使用索引类型签名 ,允许定义任意多的键值对
interface index {
[key: string]: string
}
const obj: index = {
a: '1',
b: '2',
c: '3',
}
console.log(obj)//{a:"1",b:"2",c:"3"}
interface UserArr{
[index:number]:string
}
var arr:UserArr=['111','222']
console.log(arr);//['111', '222']
类类型接口
对类中的内容进行约束, 使用 定义一个接口, 使用 implements 关键字实现接口
interface Dog {
name: string
wang(): string
}
// 类实现一个接口通过关键字 implements
class D1 implements Dog {
name: string
wang() {
return this.name
}
constructor(name: string, wangstr: string) {
this.name = name
}
}
const demo = new D1('hei', 'shagou')
console.log(demo.name)
console.log(demo.wang())
继承接口
子接口继承父接口的属性
interface Animal {
parent: string
}
interface Dog extends Animal {
child: string
}
const dog: Dog = {
child: 'hei',
parent: 'dog',
}
console.log(dog)//{child: 'hei', parent: 'dog'}
函数接口
函数接口约束函数的参数
interface encrypt{
(name:string,value:string,age?:number):string
}
var md5 :encrypt=function(name:string,value:string):string{
return name+value
}
console.log(md5('张三-','男'));