目录
1.接口是什么
接口是一系列抽象方法的声明,是一些方法特征的集合,这些方法都应该是抽象的,需要由具体的类去实现,然后第三方就可以通过这组抽象方法调用,让具体的类执行具体的方法。
2.定义接口
在 TypeScript 中,我们使用接口(Interfaces)来定义对象的类型
例如:
// 定义人的接口
interface IPerson {
readonly id: number
name: string
age: number
sex?: string
}
const person1: IPerson = {
id: 1,//只读属性,一旦赋值就不能再改变了
name: 'tom',
age: 20,
sex: '男'
}
类型检查器会查看对象内部的属性是否与IPerson接口描述一致, 如果不一致就会提示类型错误
接口里的属性不全都是必需的,有些只是在某些条件下存在,或者根本不存在,带有可选属性的接口与普通的接口定义差不多,只是在可选属性名字定义的后面加一个 ? 符号。
一些对象属性只能在对象刚刚创建的时候修改其值。 你可以在属性名前用 readonly 来指定只读属性:
3.接口的继承
就相当于这一个接口复制成员到另一个接口里面
看案例
interface Alarm {
alert(): any;
}
interface Light {
lightOn(): void;
lightOff(): void;
}
interface LightableAlarm extends Alarm, Light {
}
class Car3 implements LightableAlarm{
alert() {
console.log('Car alert3');
}
lightOn() {
console.log('Car light on3');
}
lightOff() {
console.log('Car light off3');
}
}
let mycar3 = new Car3()
mycar3.alert()
mycar3.lightOff()
mycar3.lightOn()
最后用的是类实现接口
4.类
对于传统的 JavaScript 程序我们会使用函数和基于原型的继承来创建可重用的组件,但对于熟悉使用面向对象方式的程序员使用这些语法就有些棘手,因为他们用的是基于类的继承并且对象是由类构建出来的。 从 ECMAScript 2015,也就是 ES6 开始, JavaScript 程序员将能够使用基于类的面向对象的方式。 使用 TypeScript,我们允许开发者现在就使用这些特性,并且编译后的 JavaScript 可以在所有主流浏览器和平台上运行,而不需要等到下个 JavaScript 版本。
/*
类的基本定义与使用
*/
class Greeter {
// 声明属性
message: string
// 构造方法
constructor (message: string) {
this.message = message
}
// 一般方法
greet (): string {
return 'Hello ' + this.message
}}
// 创建类的实例
const greeter = new Greeter('world')
// 调用实例的方法
console.log(greeter.greet())
5.类的继承
/*
类的继承
*/
class Animal {
run (distance: number) {
console.log(`Animal run ${distance}m`)
}}
class Dog extends Animal {
cry () {
console.log('wang! wang!')
}
}
const dog = new Dog()
dog.cry()
dog.run(100) // 可以调用从父中继承得到的方法
这个例子展示了最基本的继承:类从基类中继承了属性和方法。 这里,Dog 是一个 派生类,它派生自 Animal 基类,通过 extends 关键字。 派生类通常被称作子类,基类通常被称作超类。
因为 Dog 继承了 Animal 的功能,因此我们可以创建一个 Dog 的实例,它能够 cry() 和 run()。