TypeScript

スポンサーリンク
TypeScript

TypeScript | 関数・クラス・ジェネリクス:関数設計の深化 – 関数を引数に取る設計

「関数を引数に取る」とは、責任を“相手に渡す”設計まずイメージからいきます。function doTwice(fn: () => void) { fn(); fn();}doTwice(() => {...
TypeScript

TypeScript | 関数・クラス・ジェネリクス:関数設計の深化 – 関数型interfaceの書き方

前提:関数にも「interface で形を決める」という発想があるまず押さえたいのは、「関数の型は type だけじゃなく、interface でも書ける」ということです。type FnByType ...
TypeScript

TypeScript | 関数・クラス・ジェネリクス:関数設計の深化 – 関数型エイリアス設計

まず「関数型エイリアス」とは何かをはっきりさせる関数型エイリアスは、かんたんに言うと「よく使う関数の“形”に名前をつけること」です。type StringToNumber = (value: stri...
TypeScript

TypeScript | 関数・クラス・ジェネリクス:関数設計の深化 – map / filter / reduce 用関数型

ゴール:map / filter / reduce の「関数型」を言葉で説明できるようになるまず目標からはっきりさせます。map / filter / reduce は、「配列に対して“どう変換するか...
TypeScript

TypeScript | 関数・クラス・ジェネリクス:関数設計の深化 – 高階関数の型付け

まず「高階関数」をちゃんと定義しておく高階関数(higher-order function)は、ざっくり言うと「関数を受け取る」か「関数を返す」か、あるいはその両方をする関数のことです。functio...
TypeScript

TypeScript | 関数・クラス・ジェネリクス:関数設計の深化 – コールバック関数の型指定

まず「コールバック関数」をちゃんとイメージするコールバック関数は、ざっくり言うと「関数に“あとで呼んでね”と渡される関数」です。function doTwice(callback: () => voi...
TypeScript

TypeScript | 関数・クラス・ジェネリクス:関数設計の深化 – 可変長引数の型安全化

「可変長引数」は型の世界だとどう見えるのかまず、可変長引数は JavaScript 的にはこうです。function sum(...numbers: number[]) { return number...
TypeScript

TypeScript | 関数・クラス・ジェネリクス:関数設計の深化 – rest引数の型指定

rest引数ってそもそも何をしているのかまずは「rest引数」の正体からいきます。function sum(...numbers: number[]) { // numbers は「配列」として受け取...
TypeScript

TypeScript | 関数・クラス・ジェネリクス:関数設計の深化 – デフォルト引数と型

「デフォルト引数」と「型」はセットで考えるものまず前提から整理します。TypeScript の「デフォルト引数」は、「引数が渡されなかったときに使う値を、関数の宣言側で決めておく仕組み」です。func...
TypeScript

TypeScript | 関数・クラス・ジェネリクス:関数設計の深化 – 関数のオプション引数設計

まず「オプション引数って何者か」を整理するTypeScript で「オプション引数」と言うとき、だいたい次の2つの書き方を指します。function greet(name: string, title...
TypeScript

TypeScript | 関数・クラス・ジェネリクス:関数設計の深化 – 戻り値型を省略すべき場面

前提:「全部書く」か「全部省略」か、の二択ではないまず大事なのは、戻り値型は「常に書くべき」でも「常に省略すべき」でもない、ということです。すでに話してきたように、外部公開の関数・複雑な処理・ジェネリ...
TypeScript

TypeScript | 関数・クラス・ジェネリクス:関数設計の深化 – 戻り値型を明示すべき場面

まず前提:「いつも書け」ではなく「ここぞで書く」TypeScript は戻り値型をかなりうまく推論してくれます。だから「全部に : 型 を書け」という話ではありません。大事なのは、「推論に任せると“危...
TypeScript

TypeScript | 関数・クラス・ジェネリクス:関数設計の深化 – 引数と戻り値の型関係

「引数の型」と「戻り値の型」はセットで設計するものまず一番大事な前提から。関数の型は、「何を受け取って(引数)、何を返すか(戻り値)」この2つの組み合わせで決まります。function add(a: ...
TypeScript

TypeScript | 関数・クラス・ジェネリクス:関数設計の深化 – アロー関数の型推論

まず「アロー関数の型推論」で何が起きているかアロー関数はこういう形の関数です。const add = (a, b) => a + b;const add = (a, b) => a + b;TypeS...
TypeScript

TypeScript | 関数・クラス・ジェネリクス:関数設計の深化 – 関数宣言と関数式の違い

まず「関数宣言」と「関数式」をざっくり区別する最初に形だけ見て違いを押さえましょう。関数宣言(function declaration)function add(a: number, b: numbe...
TypeScript

TypeScript | 基礎文法:Union・基本型操作 – 「TypeScriptらしい書き方」の理解

「TypeScriptらしい書き方」って何を指しているのかまず前提をはっきりさせます。「TypeScriptらしい書き方」というのは、単に「: string とか : number をつけること」では...
TypeScript

TypeScript | 基礎文法:Union・基本型操作 – 基礎段階での型設計ルール

「型設計ルール」を決めておく意味最初に、なぜ「ルール」を意識した方がいいかから話します。TypeScript は、とりあえず書いてもそれなりに動いてくれる言語です。でも「何となく型を付ける」だけだと、...
TypeScript

TypeScript | 基礎文法:Union・基本型操作 – エラーにならないunion設計

なぜ「union型なのにすぐエラーになる」のかまず、よくあるつまずきから整理します。function printId(id: string | number) { console.log(id.toU...
TypeScript

TypeScript | 基礎文法:Union・基本型操作 – Discriminated Unionの考え方

まず「Discriminated Union」をざっくり日本語にすると難しいカタカナですが、意味はシンプルです。Discriminated Union(判別可能ユニオン)=「ある1つのプロパティの値に...
TypeScript

TypeScript | 基礎文法:Union・基本型操作 – 型の絞り込み(narrowing)

「型の絞り込み」とは何かを一言でつかむ型の絞り込み(narrowing)は、「最初はざっくりした型だったものを、条件分岐などを通して“より具体的な型”に狭めていくこと」です。TypeScript では...
TypeScript

TypeScript | 基礎文法:Union・基本型操作 – unionとintersectionの違い

まずイメージでつかむ:unionとintersectionは「または」と「かつ」最初に一番大事なことだけ頭に入れてください。A | B(union型)→ 「A または B」。どちらか一方ならOK。A ...
TypeScript

TypeScript | 基礎文法:Union・基本型操作 – intersection型の基本

intersection型は「AもBも両方持つ」型まず一言でいうと、intersection型(インターセクション型、&)は 「AかつB」=「Aの性質もBの性質も同時に持つ型」 です。対比でいうとこう...
TypeScript

TypeScript | 基礎文法:Union・基本型操作 – union型の共通プロパティ

「union型の共通プロパティ」とは何かまず前提から整理します。union型は「A か B かどちらか」の型でした。type User = { id: number; name: string;};t...
TypeScript

TypeScript | 基礎文法:Union・基本型操作 – union型とif分岐

union型とif分岐の関係をまずイメージでつかむunion型は「A か B かどちらか」という“選択肢のある型”でした。そして if 分岐は、「今この瞬間は A なのか B なのかを確かめるための問...
TypeScript

TypeScript | 基礎文法:Union・基本型操作 – union型の基本

union型は「AかBかどちらか」の型まずイメージからいきます。union型(ユニオン型)は、「この値は“これか、あれか”のどれかです」という“選択肢のある型」です。書き方はとてもシンプルで、型と型の...
TypeScript

TypeScript | 基礎文法:関数の基礎 – 関数でよく出る型エラー

はじめに:型エラーは「怒られている」のではなく「守られている」関数まわりで出る型エラーは、最初かなりストレスになりますよね。でも本質的には、「その書き方だと、実行時にバグる可能性が高いよ」と Type...
TypeScript

TypeScript | 基礎文法:関数の基礎 – nullチェックの重要性

そもそも「nullチェック」って何のためにやるのかまず一番大事なところから。nullチェックは「そこに“あるはずのもの”が、本当にあるかを確認する行為」です。プログラムを書いていると、ついこう思いがち...
TypeScript

TypeScript | 基礎文法:関数の基礎 – in演算子による型ガード

「in演算子による型ガード」は何をしてくれるのかin 演算子による型ガードは、「このオブジェクトは、このプロパティを持っているか?」を調べることで、型を絞り込む仕組みです。人間の感覚だと、こうです。「...
TypeScript

TypeScript | 基礎文法:関数の基礎 – typeofによる型ガード

typeofによる型ガードとは何かtypeof による型ガードは、「値の実行時の型をチェックして、その結果をもとに TypeScript が変数の型を“狭くする”仕組みです。人間の感覚としてはこうです...
TypeScript

TypeScript | 基礎文法:関数の基礎 – 型ガードの基礎

「型ガード」とは何かを一言でつかむまずイメージからいきます。型ガードは、「この if を通ったなら、この変数は“この型”だと安全に言えるよ」ということを、TypeScript にちゃんと分かってもらう...
スポンサーリンク