【TypeScript】Generics 泛型

用法

透過參數客製化class,是TypeScript獨有的機能

傳統的寫法

class NumberStore{
    data: number;
}

class StringStore{
    data: string;
}

//型チェックができません
class AnyStore{
    data: any
}

使用泛型的寫法

//Tという文字は自由に名付けられる
class Store<T>{
    data: T;
    getStore(): T{
        return this.data;
    }
}

let stringStore=new Store();
stringStore.data = 'X';
console.log(stringStore.getStore()); //'X'

let numberStore = new Store();
numberStore.data = 100000;
console.log(numberStore.getStore()); //100000

函數的泛型

function hello<T>(keyword: T) {
 console.log(`Log: ${keyword}`);
}

hello<string>('Hello Ian!'); //'Log: Hello Ian!'
hello<number>(1000000000);//'Log: Hello 1000000000'

指定2個以上的泛型參數

class Component<T, U>{
    name: T;
    created: U;
}

let component = new Component<string, number>();
component.name = 'app';
component.created = Date.now();