Ts知识点-接口

二、接口

  1. 可选属性? 只读属性readonly
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
// 定义一个接口 限定约束对象中的数据
interface IPerson {
// readonly id为只读类型(属性)【不能使用const(变量)】
readonly id:number,
name:string,
age:number,
// sex为可有可无
sex?:string
}
const Person:IPerson = {
id:1,
name:'he',
age:23,
// money:1000, 接口没有,对象不能再添加
}
// Person.money = 1000 接口没有,对象不能再添加
console.log(Person);

2. 函数类型:通过接口的方式作为函数的类型来使用
为了使用接口表示函数类型,我们需要给接口定义一个调用签名。
它就像是一个只有参数列表和返回值类型的函数定义。参数列表里的每个参数都需要名字和类型。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
// 接口
interface Func {
(source: string, subString: string): boolean
}
// 函数
const mySearch: Func = function(source: string, sub: string): boolean {
// source 的字符串中查找 sub 字符串
return source.search(sub) > -1
}

console.log(mySearch('abcd', 'bc'))

interface Func {
// 定义一个调用签名
(name: string, form: string): boolean
}
const handlePerson:Func = function (name: string, form: string): boolean {
console.log(name+ ' ' +form);
return false

}
console.log(handlePerson('he','China'));

3. 类类型

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
(() => {
// 定义一个接口
interface IFly {
fly(),
}
interface IRun {
run()
}
let name = 'he'
// 类 关系:类实现了这个接口
// 一个类可以被多个接口约束
class Person implements IFly, IRun {
fly() {
console.log(name + '我会飞了');
}
run() {
console.log(name + '我会跑了');
}
}
// 实例化对象
const lisi = new Person()
lisi.fly()
lisi.run()

// 接口可以继承其他多个接口
// 定义一个接口继承其他接口
interface IMydoing extends IFly, IRun { }
// 定义一个类
class Person2 implements IFly, IRun {
fly() {
console.log('zhangsan我会飞了');
}
run() {
console.log('zhangsan我会跑了');
}
}
let zhangsan = new Person2()
zhangsan.fly()
zhangsan.run()

})()

-------------本文结束感谢您的阅读-------------

我的传送门:个人网站GithubGitee