static:

از قابلیت های ES6 است و بنابراین در تایپ اسکریپت نیز وجود دارد.

اعضای استاتیک یک کلاس با استفاده از نام کلاس و یک نقطه قابل دسترسی هستند و نیازی نیست برای دسترسی به آن از روی کلاس نمونه سازی انجام شود.

<className> . <StaticPeroperty>

اعضای استاتیک با کلمه کلیدی static تعریف میشوند.

class Circle{
    static pi:number = 3.14;
}

console.log(Circle.pi);

متودهای استاتیک:

class Circle{
    static pi:number = 3.14;
    static calculateArea(radius:number){
        return this.pi*radius*radius;
    }
}

console.log(Circle.calculateArea(5))

در متود calculateArea با کلمه کلیدی this به خاصیت pi دسترسی پیدا کردیم. میتوانستیم به جای this از نام کلاس یعنی Circle هم استفاده کنیم. استفاده از هر دو روش امکان پذیر است.

this.pi // معمولا وقتی استفاده میشود که هم متود وهم خاصیت، هر دو استاتیک هستند
Circle.pi // معمولا وقتی استفاده میشود که متود استاتیک نیست ولی خاصیت استاتیک است

نکته مهم :

نه کلاس و نه متود سازنده اش نمیتوانند استاتیک باشند.

تصور کنید یک کلاس فقط شامل خواص و متودهای استاتیک باشد، بنابراین نمیتوان از آن کلاس یک شئ ایجاد کرد چون هیچ رفتار خاصی از هیچ نوعی از خودش بروز نمیدهد. در چنین کلاسی بهتر است خواص و متودهای Helper یا کمکی تعریف کنیم که عمومی هستند و به سایر اعضای کلاس های ما وابستگی ندارند.

عموماً متودهای کمکی در یک برنامه به صورت مکرر فراخوانی شده و نیاز است که به سرعت در دسترس باشند.