本文へスキップ
Case Converter Online
ja

TypeScript整形ツール

TypeScript を貼り付けると、インターフェース、ジェネリクス、型注釈をいつも同じルールで整形します。エラーは行と列の位置付きで表示されます。

TypeScript を貼り付けるか、「サンプル」を押してください。Ctrl+Enter で整形できます。処理はすべてブラウザ内で行われます。

TypeScript整形ツールでできること

TypeScript は JavaScript に型を加えた言語です。インターフェース、ジェネリクス、enum、ユニオン型、そしてすべての引数への型注釈。こうした構文が増えるほど、レイアウトの重要性も増します。ジェネリクスの型引数と戻り値の型を持つ長い関数シグネチャは1行だと読みにくく、人によって書き方が違うオブジェクト型はだんだんスタイルがばらばらになっていきます。

このツールは、TypeScript パーサーを使った Prettier 3 をブラウザ内で動かします。コードを読み込み、ひとつの一貫したレイアウトで書き出し直します。すべての型を含め、コードの中身はまったく変わりません。

使い方

  1. 左のボックスに TypeScript を貼り付けます。貼り付けた時点で整形されます。
  2. または ファイルを開く で .ts ファイルを読み込むか、サンプル で例を試します。
  3. オプションを選びます:インデント(スペース2つ、スペース4つ、タブ)、行の幅(80〜160)、末尾のカンマ(すべて、ES5、なし)、シングルクォート、セミコロン。
  4. 整形 または Ctrl+Enter を押します。
  5. コピー を押すか、ダウンロード で .ts ファイルとして保存します。

最初の整形で TypeScript パーサーが読み込まれます。その後は入力に合わせて出力が更新されます。

整形前と整形後

詰め込まれた入力です。

interface User{id:number;name:string;email?:string}export function greet(user:User,greeting:string='Hello'):string{return `${greeting}, ${user.name}`}const users:User[]=[{id:1,name:'Ada'},{id:2,name:'Linus'}]

初期設定のまま 整形 した結果です。

interface User {
  id: number;
  name: string;
  email?: string;
}
export function greet(user: User, greeting: string = "Hello"): string {
  return `${greeting}, ${user.name}`;
}
const users: User[] = [
  { id: 1, name: "Ada" },
  { id: 2, name: "Linus" },
];

インターフェースのメンバーはそれぞれ別の行になり、型注釈のコロンの後にはスペースが入り、オブジェクトの配列は1行だと 80 文字を超えるので分割されています。短いオブジェクトは配列の中で1行のまま残ります。

ジェネリクスと型エイリアスも同じように扱われます。

type ApiResponse<T> = { data: T; error?: string };
async function get<T>(url: string): Promise<ApiResponse<T>> {
  const r = await fetch(url);
  return r.json() as Promise<ApiResponse<T>>;
}

アクセス修飾子と ?? 演算子を使ったクラスの例です。

class Cart {
  private items: Map<string, number> = new Map();
  add(id: string, qty = 1): void {
    this.items.set(id, (this.items.get(id) ?? 0) + qty);
  }
}

インデント をタブにすると、enum はこうなります(各メンバーの先頭はタブです)。

enum Role {
	Admin = "admin",
	Editor = "editor",
}

構文エラー

コードを解析できない場合は、TypeScript パーサーのメッセージが位置付きで表示されます。2つの例を挙げます。

  • let count: number = ; では 1行目、21列目:Expression expected. と表示されます。
  • function add(a: number, b: number { では 1行目、35列目:',' expected. と表示され、閉じかっこが抜けている場所を指します。

入力欄で表示 を押すと、問題の箇所にカーソルが移動します。

きれいに整形できても、コンパイルが通るとは限らない点に注意してください。次の行は型エラーですが、整形は問題なく行われます。

let count: number = "five";

これを検出できるのは TypeScript コンパイラだけです。

ヒント

  • プロジェクトに .prettierrc がある場合は、ここでも同じオプションを設定すると、リポジトリと同じ出力になります。
  • 末尾のカンマ を「すべて」にすると、型引数や関数の引数が折り返されたときに、最後の要素の後にもカンマが付きます。配列とオブジェクトだけにカンマを付けたい場合は「ES5」を選んでください。
  • React を使った .tsx ファイルも、TypeScript パーサーが JSX を扱えるので整形できます。
  • 型定義と一緒に GraphQL スキーマも整形したいときは GraphQL整形ツール を使ってください。tsconfig.json のような JSON 設定ファイルはコメントを書けますが、厳密な JSON では認められていないため、JSON整形ツール ではエラーになります。

TypeScriptを整形するほかの方法

  • VS Code には TypeScript フォーマッターが組み込まれています。「ドキュメントのフォーマット」(Windows は Shift+Alt+F、macOS は Shift+Option+F)を実行してください。このページと同じ結果にするには、Prettier 拡張機能を入れて既定のフォーマッターに選びます。
  • コマンドライン:npx prettier --write "src/**/*.ts" でフォルダ全体を整形できます。
  • pre-commit フック:lint-staged のようなツールを使うと、コミットのたびに変更したファイルへ Prettier を実行できるので、整形の問題がコードレビューまで持ち込まれません。

普通の JavaScript ファイルには、同じオプションでダウンロードサイズが小さい JavaScript整形ツール が使えます。

TypeScript整形ツールのよくある質問

このツールで型チェックはできますか?

いいえ。コードを解析して構造を把握し、一貫したレイアウトで書き出し直すだけです。数値が必要な場所に文字列を渡しているといった型エラーは報告されません。型チェックには tsc かエディタを使ってください。

TypeScript のページは JavaScript のページより読み込みに時間がかかるのはなぜですか?

TypeScript パーサーは JavaScript パーサーよりサイズが大きいためです。最初に「整形」を押したときに一度だけダウンロードされ、次回以降はブラウザのキャッシュが使われます。

普通の JavaScript もここで整形できますか?

はい。正しい JavaScript は正しい TypeScript でもあるので、問題なく整形できます。ただ、JavaScript整形ツールはより小さいパーサーを読み込むので、普通の JS ならそちらの方が少し速く動きます。

デコレーター、enum、ジェネリクスには対応していますか?

はい。Prettier 3 経由で TypeScript パーサーを使っているので、enum、ジェネリクス、satisfies、オプショナルチェーン、デコレーターといった新しい構文も理解します。

その他のコード・データツール

すべてのツールを見る