1. suin

    Posted

    suin
Changes in title
+TypeScript: <T>の書く位置チートシート
Changes in tags
Changes in body
Source | HTML | Preview
@@ -0,0 +1,113 @@
+この投稿はTypeScriptのジェネリクスの型引数(type parameter)をどこに書くのかのチートシートです。
+
+## `<T>`の書く位置まとめ
+
+- 関数宣言
+- 関数式
+- アロー関数
+- メソッド宣言
+- 関数型
+- コンストラクタ型
+- 関数シグネチャ
+- コンストラクタシグネチャ:
+ - 引数リスト`()`の直前
+- クラス宣言
+- インターフェース宣言
+- 型エイリアス:
+ - 識別子の直後
+
+## `<T>`の書く位置チートシート
+
+### 関数宣言
+
+```ts
+function name<T>() {}
+```
+
+### 関数式
+
+```ts
+const name = function <T>() {};
+const name = function* <T>() {}; // ジェネレーター
+const name = function name<T>() {}; // 名前付き関数式
+```
+
+### アロー関数
+
+```ts
+const name = <T>() => {};
+
+const a = {
+ method: <T>() => {},
+};
+```
+
+### クラス宣言
+
+```ts
+class Name<T> {}
+```
+
+### メソッド宣言
+
+```ts
+// クラス宣言
+class Name {
+ method<T>() {}
+}
+
+// オブジェクトリテラル
+const a = {
+ method<T>() {},
+};
+```
+
+### インターフェース
+
+```ts
+interface Name<T> {}
+```
+
+### メソッドシグネチャ
+
+```ts
+// インターフェース宣言
+interface Name {
+ method<T>();
+}
+
+// 型エイリアス
+type A = {
+ method<T>();
+};
+```
+
+### 関数シグネチャ
+
+```ts
+type A = { <T>(): any };
+```
+
+### コンストラクタシグネチャ
+
+```ts
+type A = { new <T>(): any };
+```
+
+### 関数型
+
+```ts
+type A = <T>() => any;
+```
+
+### コンストラクタ型
+
+```ts
+type A = new <T>() => any;
+```
+
+### 型エイリアス
+
+```ts
+type A<T> = any;
+```