🐡

TypeScript の命名規則ってなんだ

2022/09/10に公開

TypeScript の命名規則ってなんだ

はじめに

基本的にはlowerCamelCaseと思っているが、型の命名に困ってる。
また大文字を使うタイミングもわからない。なお、細かいコーディングスタイルは Prettier や Rome などのフォーマッタに全てを任せているので気にしない。

ググったらTypeScript Deep Diveにスタイルガイドが記載されていたので見ていきます。他にも Microsoft と Google のスタイルガイトを見ていきます。

https://github.com/microsoft/TypeScript/wiki/Coding-guidelines

https://google.github.io/styleguide/tsguide.html

TypeScript Deep Dive

命名規則にはあまり細かい記述がありませんでしたので、流します。

Microsoft

Microsoft のコーディングスタイルは、Typescript の開発者向けコーディングスタイルであるため、コミュニティ向けのスタイルではない

大きくタイトル部分に書かれていましたので、流してます。

Google

Goolge は命名規則が丁寧に書かれていたのでメインに見ていきます。

では詳細に命名がテーブルで記載されていたので Google の命名規則をメインに見ていきます。

https://google.github.io/styleguide/tsguide.html#syntax

  • _ を使用しないこと
    • _prefixsuffix_
  • $ を使用しないこと
    • サードパーティの命名規則に合わせる場合を除き、使用しないでください
    • だが個々のチームに委ねられている
  • 型には型であることを示す名前を付けない
    • ~~Ifoo~~ また~~FooInterface~~
    • 既にtypeinterfaceで示されていることを 2 重で表現しない
  • 略語についてはプラットフォーム名(PHP, XML)で必要とされない限り、loadHTTPURLではなくloadHttpUrl を使用する

変数(variable / property)

変数には、lowerCamelCaseを使います。

let fooVar = { hogeFuga: "fuga" };

クラス名(class)

クラス名にはUpperCamelCaseを使います。

class Foo {
  private static readonly MY_SPECAL_NUMBER = 5;

  bar() {
    return 2 * Foo.MY_SPECAL_NUMBER;
  }
}

関数(function / parameter )

関数には、lowerCamelCaseを使います。

メンバの場合は、クラス名と似ているのでlowerCamelCaseを使います。

function barFunc(barParam: string) {}

型(type/interface)

型には、UpperCamelCaseを使います。

interface Foo {}
type Bar = {};

定数(グローバルな定数)

グローバルな定数はEnum を含めてUPPER_SNAKE_CASE を使います。

API_BASE_URL = "https://example.com/api";

所感

型と定数の命名が明確になったので、良かったです。あと細かく記述されていたことを意識していきます。また、_ を使いたくなってた場面が多かったので気を付けます。React の命名規則に関しては、Airbnb のスタイルガイドがあったので今度確認します。

参考

https://google.github.io/styleguide/tsguide.html

https://github.com/microsoft/TypeScript/wiki/Coding-guidelines

https://typescript-jp.gitbook.io/deep-dive/styleguide

https://basarat.gitbook.io/typescript/

https://airbnb.io/javascript/react/#class-vs-reactcreateclass-vs-stateless

GitHubで編集を提案

Discussion