高木のブログ

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"

ytkg

Written by ytkg, Twitter, GitHub