/**练习typeScript-4 class
* Created by liyanq on 17/6/9.
*/
/*注意点
* 1,abstract函数只能出现在abstract类中
* 2,abstract函数的参数不能带默认值
* 3,private readonly注意顺序
* 4,*/
class Animal {
name: string;
constructor(theName: string) {
this.name = theName;
}
move(distanceInMeters: number = 0) {
console.log(`${this.name} moved ${distanceInMeters}m.`);
}
}
class Snake extends Animal {
constructor(name: string) {
super(name);
}
move(distanceInMeters = 5) {
console.log("Slithering...");
super.move(distanceInMeters);
}
}
class Horse extends Animal {
constructor(name: string) {
super(name);
}
move(distanceInMeters = 45) {
console.log("Galloping...");
super.move(distanceInMeters);
}
}
let sam = new Snake("Sammy the Python");
let tom: Animal = new Horse("Tommy the Palomino");
sam.move();
tom.move(34);
class Octopus {
private numberOfLegs: number = 8;
constructor(public name: string) {
console.log(this.numberOfLegs);
}
}
let dad = new Octopus("Man with the 8 strong legs");
// dad.name = "Man with the 3-piece suit";
//----------Accessors-----------//
let passcode = "secret passcode";
class Employee {
private _fullName: string;
get fullName(): string {
console.log("get getfullName(): string");
return this._fullName;
}
set fullName(newName: string) {
if (passcode && passcode == "secret passcode") {
this._fullName = newName;
}
else {
console.log("Error: Unauthorized update of employee!");
}
}
}
let employee = new Employee();
employee.fullName = "Bob Smith";
if (employee.fullName) {
}
//---------------Static Properties---------------
class Grid {
static origin = {x: 0, y: 0};
calculateDistanceFromOrigin(point: {x: number, y: number;}) {
let xDist = (point.x - Grid.origin.x);
let yDist = (point.y - Grid.origin.y);
return (xDist * xDist + yDist * yDist) * this.scale;
}
constructor(public scale: number) {
}
}
let grid1 = new Grid(1.0); // 1x scale
let grid2 = new Grid(5.0); // 5x scale
console.log(grid1.calculateDistanceFromOrigin({x: 10, y: 10}));
console.log(grid2.calculateDistanceFromOrigin({x: 10, y: 10}));
class Greeter {
static standardGreeting = "Hello, there";
greeting: string;
greet() {
if (this.greeting) {
return "Hello, " + this.greeting;
}
else {
return Greeter.standardGreeting;
}
}
}
/*typeof Greeter:give me the type of the Greeter class itself*/
let greeterMaker: typeof Greeter = Greeter;
console.log(typeof Greeter);//function
greeterMaker.standardGreeting = "Hey there!";
console.log(greeterMaker);//{ [Function: Greeter] standardGreeting: 'Hey there!' }
let greeter2: Greeter = new greeterMaker();
console.log(greeter2.greet());
let g:Greeter = new Greeter();
console.log(g.greet());//注意:这里也改了啊,也是Hey there!
//-----------Using a class as an interface-----//
//看了一眼,接口继承类,不学也罢,省的乱~~~
[typeScript语法4]class
最新推荐文章于 2022-10-27 14:52:36 发布