RubyでいうクラスメソッドとプライベートクラスメソッドをTypeScriptで実装する
2021/12/07
最近はTypeScriptの勉強をしている
RubyでいうクラスメソッドとプライベートクラスメソッドをTypeScriptで実装してみた
ググってもなかなか出てこなくて、そもそもこういう使い方するのかどうかってところだけど、とりあえず目的の挙動するもができたので記録として残す
TypeScript以前にJavaScriptの勉強をした方が良さげだなあ
Ruby
クラスメソッドは self.
を付けてメソッドを定義する
プライベートメソッドはクラスメソッドを定義したあと、 private_class_method
でプライベートに指定する
class Foo
def self.bar
"bar, #{baz}"
end
def self.baz
'baz'
end
private_class_method :baz
end
Foo.bar #=> "bar, baz"
Ruby 2.1以降から以下のような定義の仕方もできるようになっている
private_class_method def self.baz
'baz'
end
TypeScript
static
を付けるとクラスメソッドっぽいものになる
さらに private
を付けるとプライベートなクラスメソッドっぽいものになる
class Foo {
static bar() {
return `bar, ${this.baz()}`;
}
private static baz() {
return 'baz';
}
}
Foo.bar() //=> "bar, baz"