基本概念
TS是在JS基础上进行改进的,被赋予JS的概念,使我们在编写时就可以发现错误。
类型
单一类型
number,boolean,string,null,undefined,Object,Symbol,
any,void,enum,never,Array
联合类型
number|string
交叉类型
number & string
类型使用
直接在后面加上类型就可以
let a: number;
let b: string;
let c: null;
let d: undefined;
let e: boolean;
let obj: Ixxx = {
a: 1,
b: 2,
};
let fun: Iyyy = () => {};
高级语法
类中的修饰符的权限划分
public 表示在当前类、子类、实例中都能访问。 protected 表示只能在当前类、子类中访问。 private 表示只能在当前类访问。
class Animal {
protected AnimalName: string;
readonly age: number;
static type: string;
private _age: number;
get age(): number {
return this._age;
}
set age(age: number) {
this._age = age;
}
run() {
console.log("run", this.AnimalName, this.age);
}
constructor(theName: string) {
this.AnimalName = theName;
}
}
Animal.type = "2";
const dog = new Animal("dog");
dog.age = 2;
dog.AnimalName;
dog.run;
在类中
class Cat extends Animal {
dump() {
console.log(this.AnimalName);
}
}
let cat = new Cat("catname");
cat.AnimalName;
cat.run;
cat.age = 2;
抽象类的特点
抽象类不能直接实力化,抽象类的方法和属性必须被子类实现。
抽象类和借口的区别
- 抽象类要被子类继承,接口要被类实现
- 在 ts 中使用 extends 去继承一个抽象类。 在 ts 中使用 implements去实现一个接口
- 接口只能做方法声明,抽象类中可以作方法声明,也可以做方法实现
- 抽象类是有规律的,抽离的是一个类别的公共部分,而接口只是对相同属性和方法的抽象,属性和方法可以无任何关联
抽象类实现
abstract class Animal {
abstract makeSound(): void;
move(): void {
console.log("roaming the earch...");
}
}
class Cat extends Animal {
makeSound() {}
move() {
console.log('move');
}
}
new Cat3();
接口实现
interface Ia {
a: string;
b?: string;
readonly c: number;
[key: number]: string;
}
interface Ib extends Ia {
age: number;
}
let test1: Ia = {
a: "",
c: 2,
age: 1,
};
test1.c = 2;
const item0 = test1[0];
参考公众号:前端先锋
|