TypeScript class

スポンサーリンク

TypeScript class

TypeScript extends JavaScript with type. Compile and generate JavaScript. Typescript can be speed up to develop

TypeScript has class, the details are (Handbook)

Sample

In this entry, cover following topic

  • class, constructor
  • access level (public, protected, private)
  • extend
  • abstract
  • static, readonly
  • getter / setter
  • interface

class, constructor

class Hello {
    name: string;

    constructor(name: string) {
        this.name = name;
    }

    greet() {
        return "Hello, " + this.name;
    }
}


// How to use
let hello = new Hello("Taro");
console.log(hello.greet());

This is class example and how to use it.

method, property does not have any prefix, constructor is used constructor attr.

Usage is just new Xxx and call method with dot

access level (public, protected, private)

TypeScript supports public, protected, private. Meaning is almost same as other languages like java, C++ etc..

// public
class Member {
    public name: string;

    constructor(name: string) {
        this.name = name;
    }
}


// protected
class Member2 {
    protected name: string;

    constructor(name: string) {
        this.name = name;
    }
}

class ProtectedMember2 extends Member2 {

    constructor(name: string) {
        super(name);
    }

    greet() {
        return "Hello, " + this.name;
    }
}


// private
class Member3 {
    private name: string;

    constructor(name: string) {
        this.name = name;
    }
}

// check
let member1 = new Member("Taro");
console.log(member1.name);

let member2 = new Member2("Jiro");
// console.log(member2.name);   No cannot use
let pmember2 = new ProtectedMember2("Hiro");
console.log(pmember2.greet());

let member3 = new Member3("Saburo");
// console.log(member3.name);    No cannot use

extend

// extend
class Person {
    protected name: string;
    constructor(name: string) {
        this.name = name;
    }

    greet() {
        return "Hello, " + this.name;
    }
}

class Employee extends Person {


    constructor(name: string) {
        super(name);
    }

    greet() {
        return "Nice to meet you, " + this.name;
    }
}

var person = new Person("Jack");
var employee = new Employee("Cacao");

console.log(person.greet());
console.log(employee.greet());

abstract

// abstract
abstract class AbstractPerson {
    constructor(public name: string) {}

    printName(): void {
        console.log("Name: " + this.name);
    }

    abstract printFullMessage(): void; // must be implemented in derived classes
}

class ActualPerson extends AbstractPerson {

    printFullMessage() {
        console.log("I am " + this.name);
    }
}

static, readonly

// static
// readonly
class Shape {
    static origin = { x: 0, y: 0 };

    readonly z: number;

    constructor(z: number) {
        this.z = z;
    }
}

let shape = new Shape(1);
console.log(Shape.origin.x);
Shape.origin = {x: 1, y: 1};
console.log(Shape.origin.x);

console.log(shape.z);
// shape.z = 3;   No

getter / setter

// getter/setter
class Group {
    private _gname: string;

    get gname(): string {
        return this._gname;
    }

    set gname(newName: string) {
        if (newName && newName.length > 10) {
            throw new Error("group name has a max length of " + 10);
        }
        this._gname = newName;
    }
}

var group = new Group();
group.gname = "Amari";
console.log(group.gname);
group.gname = "Swap";
console.log(group.gname);

We can define original getter and setter instead of public attr.

interface

One of surprising for typescript is to extend class with interface. interface takes class function into it.

// interface
interface BGroup extends Group {
    secret: number;
}
TypeScript
スポンサーリンク
Professional Programmer2

コメント