这是我参与「第五届青训营」伴学笔记创作活动的第 4 天,继续之前的typescript学习。
function 函数
定义
函数是 JavaScript 中的基本组成部分,TypeScript 为 JavaScript 中的函数提供了完整的定义类型。
函数(function)可以作为参数传递,可以存入数组,可以作为返回值返回等等,这些都是 JavaScript 中的基本特性。
下面是一段简单的函数代码:
function add(x: number, y: number, z?: number): number {
if (typeof z === "number") return x + y + z;
else return x + y;
}
//函数表达式
const add1 = function (x: number, y: number, z?: number): number {
if (typeof z === "number") return x + y + z;
else return x + y;
};
let res = add(23, 23, 12);
其中可以看到,在 typescript 中,我们需要对于一个函数地参数和其返回值进行类型的定义,这样的话,我们就可以在编译的时候就能够发现一些错误。
可选参数
在 TypeScript 中,我们可以使用 ? 来标记一个参数为可选参数,可选参数必须放在必选参数的后面。在上面的代码之中,z 就是一个可选参数。我们同样可以给可选参数一个默认值,这样的话,当我们没有传入这个参数的时候,就会使用默认值。
例子:
function add(x: number, y: number, z: number = 10): number {
return x + y + z;
}
let res = add(23, 23);
Class 类
基本概念
-
类:定义了一件事物的抽象特点,包含它的属性和方法。
-
对象:类的实例。
-
面向对象三大特性:封装(将操作过程隐藏起来,只向外暴露需要使用地接口)、继承(子类继承父类,子类可以拥有父类地所有成员,并且可以更进一步)、多态(一个方法的多个实现)。
基础代码
//创建一个基本动物类
class Animal {
readonly name: string; //每个动物都有名字
static categoies: string[] = ["mammal", "bird"]; //静态方法可以由类名直接调用,这意味着静态方法一般与不受其实例化对象影响
static isAnimal(a: any) {
return a instanceof Animal;
}
constructor(name: string) {
//构造函数
this.name = name;
}
run() {
//成员方法
return `${this.name} is running!! `;
}
}
const dog = new Animal("wangcai"); //用Animal类创建一个对象
console.log(dog.run());
console.log(Animal.isAnimal(dog));
class Dog extends Animal {
//创建一个Animal的子类
constructor(name: string) {
//重写构造函数时必须要有super关console.log(this.name)键字
super(name);
console.log(this.name);
}
//新的成员函数
bark(): string {
return `${this.name} : wang wang wang!!`;
}
//多态 重写run方法
run(): string {
return `wang! ` + super.run();
}
}
const myDog = new Dog(`dabao`);
console.log(myDog.bark());
console.log(myDog.run());
console.log(Animal.isAnimal(myDog));
在上述的代码中,我们实现了一个 Animal 类,其中包含了一个构造函数,一个成员方法,一个静态方法,一个静态属性。
-
构造函数:在创建一个类的实例时,会调用构造函数,构造函数中的 this 指向当前的实例。
-
成员方法:可以通过实例对象调用的方法。
-
静态方法、静态属性:可以通过类名直接调用,不需要实例化对象。
我们用 Animal 类创建了一个对象 dog,调用了 dog 的 run 方法。同时我们可以使用 Animal 类的静态方法 isAnimal 来判断一个对象是否是 Animal 类的实例。
然后我们创建了一个 Dog 类,继承了 Animal 类,Dog 类中有一个构造函数,一个成员方法 bark,一个重写的 run 方法。我们用 Dog 类创建了一个对象 myDog,调用了 myDog 的 bark 方法和 run 方法。
类的修饰符
-
public:公有属性或方法,可以在任何地方被访问到,默认所有的属性和方法都是 public 的。
-
private:私有属性或方法,不能在声明它的类的外部访问。
-
protected:受保护属性或方法,不能在声明它的类的外部访问,但是可以在子类中访问。
-
readonly:只读属性,只允许出现在属性声明或索引签名中。
这些修饰符帮助我们完成一个类的封装。