/** * 單例基類 * @example * export default class Test extends BaseSigleton() { ...... } * Test.Instance.Init(); */ // tslint:disable-next-line:typedef export default function BaseSingletonV2() { class BaseSingleton { protected constructor() { } public static _instance: BaseSingleton = null; public static get Instance(): T { if ((this)._instance == null) { (this)._instance = new (this)(); } return (this)._instance; } /** 初始化 */ public Init(): void { /** */ } /** 銷毀 */ public Disp(): void { (this)._instance = null; } } return BaseSingleton; }