TypeScript class interface
TypeScript class
JavaScript doesn’t have class idea.
TypeScript has.
Finally, TypeScript compiles Javascript. It becomes prototype.
Example
class Helo { message: string; constructor(message: string) { this.message = message; } sayHello() { return "Hello, " + this.message; } }
Use this
let greeter = new Helo("Erichi"); console.log(greeter.message); // Can access console.log(greeter.sayHello());
private, protected, public
We can use access attr like other language
class Employee { private name: string; // private, protected, private constructor(theName: string){ this.name = theName; } }
Other Sample
class Animal { name: string; constructor(theName: string) { this.name = theName; } run(kilo: number = 1) { console.log(`${this.name} run ${kilo}`) } } var anim = new Animal("lion"); anim.run(); class Bear extends Animal { constructor(name: string) { super(name); } run(kilo: number = 5) { //public, private super.run(kilo); } }
Interface
TypeScript has interface like Java, C#
interface ClockInterface { currentTime: Date; // no let setTime(d: Date); } class Clock implements ClockInterface { currentTime: Date; //let num: number; Error constructor(h: number, m: number){} setTime(d: Date) { this.currentTime = d; } } interface Counter { (start: number): string; interval: number; reset(): void; } function getCounter(): Counter { let counter = <Counter>function (start: number) { }; counter.interval = 123; counter.reset = function () { }; return counter; }
Implements more than 2 interfaces
interface M1 { lost(); } interface M2 { play(); } class M3 implements M1, M2 { lost() { } play() { } }
Reverse!!
interface can extend class
class Base { private state: any; } interface Next extends Base { } interface Next2 extends Next { }
Abstract
We can also use abstract
abstract class Player { abstract hit(): void; play(): void { console.log("Ball"); } } class NormalPlayer extends Player { hit(): void { console.log("I am normal player"); } }
static
class Grid { static origin = {x:0, y:0}; } console.log(Grid.origin);