类
类
class Greeter {
greeting: string;
constructor (message: string) {
this.greeting = message;
}
greet () {
return `Hello, ${this.greeting}`;
}
}
let greeter = new Greeter('World');
console.log(greeter.greet());
继承
class Animal {
name: string;
constructor (name: string) {
this.name = name;
}
move (distanceInMeters: number = 0): string {
return `${this.name} moved ${distanceInMeters}m.`;
}
}
class Dog extends Animal {
constructor (name) {
super(name);
}
bark (): string {
return 'Woof! Woof!';
}
move (distanceInMeters = 20): string {
return super.move(distanceInMeters);
}
}
const dog = new Dog('Lili')
console.log(dog.bark());
console.log(dog.move(100));
公共、私有与受保护的修饰符
class AnimalPulic {
public name: string;
public constructor (name: string) {
this.name = name;
}
public move (distanceInMeters: number = 0): string {
return `${this.name} moved ${distanceInMeters}m.`;
}
}
class AnimalPrivate {
private name: string;
public constructor (name: string) {
this.name = name;
}
public move (distanceInMeters: number = 0): string {
return `${this.name} moved ${distanceInMeters}m.`;
}
}
console.log(new AnimalPrivate("Cat").name);
class Person {
protected name: string;
protected constructor (name: string) {
this.name = name;
}
}
class Employee extends Person {
private department: string;
constructor (name, department) {
super(name);
this.department = department;
}
public getElevatorPitch(): string {
return `Hello, my name is ${this.name} and I work in ${this.department}.`;
}
}
let howard = new Employee('Howard', 'Sales');
console.log(howard.getElevatorPitch());
console.log(howard.name);
console.log(new Person("John"));
readonly修饰符
class Octopus {
readonly numberOfLegs: number = 8;
constructor (private name: string) {}
}
let dad = new Octopus('Man with the 8 strong legs');
dad.name = 'Man with the 3-piece suit';
存取器:get、set
class EmployeeGetSet {
private _fullName: string;
get fullName (): string {
return this._fullName;
}
set fullName (_fullName: string) {
this._fullName = _fullName;
}
}
let employeeGetSet = new EmployeeGetSet();
employeeGetSet.fullName = 'Tom';
console.log(employeeGetSet.fullName);
静态属性
class Gird {
static origin = {
x: 0,
y: 0
}
constructor (public scale: number) {}
calculateDistanceFromOrigin (point: {x: number, y: number}) {
let xDist = (point.x - Gird.origin.x);
let yDist = (point.y - Gird.origin.y);
return Math.sqrt(xDist * xDist + yDist * yDist) / this.scale;
}
}
抽象类
abstract class AnimalAbstract {
constructor(public name: string) {}
abstract makeSound() : string;
}
class Sheep extends AnimalAbstract {
constructor(name) {
super(name);
}
makeSound (): string {
return `A Sheep named ${name}, sounds mie mie~`;
}
moved () {
return `A Sheep named ${name}, moved 8km`;
}
}
let sheep: AnimalAbstract;
sheep = new Sheep('Hary');
console.log(sheep.makeSound());
console.log(sheep.moved());