TypeScript 类
类的修饰符
class Article {
// 公共属性
public afA: string;
// 可选的公共属性,意味着可以不赋值
public afB?: string;
// 可选的受保护属性,只能在该类及其子类中访问。
protected afC?: string;
// 私有属性,只能在该类内部访问。
private afD?: string;
// 公共的静态属性,可以在类的实例之外访问,与实例无关。
public static afE: string;
// 私有的静态属性,只能在类内部访问。
private static afF: string;
// 只读属性,必须在构造函数中初始化,之后无法更改。
readonly afG?: string;
// 构造函数
constructor(afA: string, afC: string) {
this.afA = 'title';
this.afC = 'content';
}
}
constructor 构造函
构造函数中可以直接使用 this.
来初始化成员变量
class User {
constructor(public name: string) {
this.name = name;
}
}
存取器
class User {
// 设置私有属性
private _password: string = '';
// get 和 set 的作用就是可以把一个方法伪装成变量一样操作。
get password(): string {
return '*****';
}
set password(newPass: string) {
this._password = newPass;
}
}
泛型类
class Collection<T> {
data: T[] = [];
public push(...items: T[]) {
this.data.push(...items);
}
public shift(): T | undefined {
return this.data.shift();
}
}
const A = new Collection<number>();
A.push(1, 2, 3);
class User<T> {
public constructor(private _user: T) {}
public get(): T {
return this._user;
}
}
interface UserInterface {
name: string;
age: number;
}
const user = new User<UserInterface>({ name: 'alrcly', age: 18 });
console.log(user.get.name);
interface ArticleEnteface<B, C> {
title: string;
isLock: B;
comments: C[];
}
type CommentType = {
content: string;
author?: string;
};
const hd: ArticleEnteface<boolean, CommentType> = {
title: '开心的一天',
isLock: true,
comments: [{ content: 'Good' }, { content: 'NONoNo' }],
};