メインコンテンツまでスキップ

静的メソッド (static method)

JavaやPHPには静的メソッド(static method)という概念があります。Rubyではクラスメソッドに相当します。通常のメソッドはインスタンスに属しますが、静的メソッドはクラスに属します。JavaやPHPではstaticキーワードで静的フィールドを宣言できます。

Java
java
class SomeClass {
static public void doSomething() {
// ...
}
}
class Main {
public static void main(String[] args) {
SomeClass.doSomething();
}
}
Java
java
class SomeClass {
static public void doSomething() {
// ...
}
}
class Main {
public static void main(String[] args) {
SomeClass.doSomething();
}
}
PHP
php
class SomeClass
{
public static function doSomething()
{
// ...
}
}
SomeClass::doSomething();
PHP
php
class SomeClass
{
public static function doSomething()
{
// ...
}
}
SomeClass::doSomething();

JavaScriptにはJavaのような静的メソッドの機能がありません。代わりに、クラスのプロパティに後から関数を代入することで似たようなことができます。

JavaScript
js
class SomeClass {}
SomeClass.doSomething = function () {
// ...
};
SomeClass.doSomething();
JavaScript
js
class SomeClass {}
SomeClass.doSomething = function () {
// ...
};
SomeClass.doSomething();

TypeScriptでは、Java風の静的メソッドの書き方ができるようになっています。TypeScriptで静的メソッドを宣言するにはstaticキーワードを用います。

TypeScript
ts
class SomeClass {
static doSomething() {
// ...
}
}
 
SomeClass.doSomething();
TypeScript
ts
class SomeClass {
static doSomething() {
// ...
}
}
 
SomeClass.doSomething();

静的メソッドとアクセス修飾子

TypeScriptの静的メソッドはアクセス修飾子を組み合わせられます。

ts
class SomeClass {
private static doSomething() {
// ...
}
}
ts
class SomeClass {
private static doSomething() {
// ...
}
}

📄️ アクセス修飾子

JavaやPHPなどの言語では、フィールドやメソッドにprivate, protected, publicを指定できます。JavaScriptでもprivateのようなプロパティを実現するためにプライベートクラスフィールドという仕様がありますが、Javaのようなアクセス修飾子とはやや様相が異なります。TypeScriptにはJava風のアクセス修飾子があります。