TypeScript – Interface

Just as TypeScript supports inheritance, it also supports interfaces.
We can define an interface and then implement it in one or more classes.

EX:

interface tax {
    taxpayerId: string;
    calculateTax(): number;
}

class IncomeTax implements tax {
    taxpayerId: string;
    calculateTax(): number {
        return 10000;
    }
}

class ServiceTax implements tax {
    taxpayerId: string;
    calculateTax(): number {
        return 2000;
    }
}

Convert ts to js:

var IncomeTax = (function () {
    function IncomeTax() {
    }
    IncomeTax.prototype.calculateTax = function () {
        return 10000;
    };
    return IncomeTax;
}());
var ServiceTax = (function () {
    function ServiceTax() {
    }
    ServiceTax.prototype.calculateTax = function () {
        return 2000;
    };
    return ServiceTax;
}());
TypeScript – Interface

TypeScript – Types

types 是 typescript 主要的 improvement,對於在寫 code 或是讀 code 的時候都有很大的幫助,可以避免型態類型的 bug 發生。

typescript 的語法是演化自 ES5,對於變數定義的語法還是使用 var,但是現在我們可以在 name 的後方加上變數的 type,例如:

var name: string;

宣告 function 時也可以在 arguments 或 return values 後加上 type:

function sayHello(name: string): string {
    return "Hello " + name;
}

typescript 內建的 type 有以下幾種:

  • string
var name: string = 'Jack';
  • number
var year: number = 2016;
  • boolean
var passTest: boolean = true;
  • array
var usernames: Array<string> = ['Jack', 'John', 'Jay'];
var usernames: string[] = ['Jack', 'John', 'Jay'];
var userids: Array<number> = [1, 2, 3];
var userids: number[] = [1, 2, 3];
  • enums

enums 是用來命名數字類型的 values,例如球員位置的定義可以使用:

enum Position {PG, SG, SF, PF, C };
var position: Position = Position.PG;
  • any

any 為 type 的預設值,代表任何 type 皆允許

var anything: any = 'as string';
    anything = 1;
    anything = [1, 2, 3];
  • void

void 通常使用在沒有回傳值的 function 上

function setName(name: string): void {
    this.name = name;
}

 

 

 

 

TypeScript – Types