0Pricing
TypeScript Academy · レッスン

Readonly、Exclude、Extract、NonNullable

不変性やフィルタリングに使える、さらに多くのユーティリティ型を適用します。

「Readonly、Exclude、Extract、NonNullable」はCoddyKit上の無料TypeScript Academyレッスンです。 これはレッスン4/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはTypeScript Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 TypeScript Academyコースには全4レッスンが含まれています。

概要

TypeScript の標準ライブラリには、Partial、Required、Pick、Omit 以外にも複数のユーティリティ型が含まれています。このレッスンでは、Readonly、Exclude、Extract、NonNullable を扱います。

Readonly<T>

T のすべてのプロパティを readonly にします。作成後のプロパティの再代入を防ぎます。
interface Config { host: string; port: number; }
const cfg: Readonly<Config> = { host: 'localhost', port: 3000 };
// cfg.host = 'remote'; // Error!

Exclude<T, U>

ユニオン T から、U に代入可能なすべてのメンバーを削除します。
type Status = 'pending' | 'active' | 'banned' | 'deleted';
type ActiveStatus = Exclude<Status, 'banned' | 'deleted'>;
// 'pending' | 'active'

Extract<T, U>

T のユニオンメンバーのうち、U に代入可能なものだけを残します。Exclude の反対です。
type StringOrNumber = string | number | boolean;
type JustStrNum = Extract<StringOrNumber, string | number>;
// string | number

NonNullable<T>

T から null と undefined を削除します。
type MaybeString = string | null | undefined;
type DefinitelyString = NonNullable<MaybeString>; // string

ReturnType<T>

関数型 T の戻り値の型を抽出します。
function fetchUser() { return { id: 1, name: 'Alice' }; }
type User = ReturnType<typeof fetchUser>; // { id: number; name: string }

Parameters<T>

関数のパラメーターの型をタプルとして抽出します。
function add(a: number, b: number): number { return a + b; }
type AddParams = Parameters<typeof add>; // [number, number]

InstanceType<T>

コンストラクター関数型によって生成されるインスタンスの型を取得します。
class HttpClient { get(url: string) { return fetch(url); } }
type Client = InstanceType<typeof HttpClient>; // HttpClient

Awaited<T>

ネストした Promise 型をアンラップします。
type A = Awaited<Promise<string>>;          // string
type B = Awaited<Promise<Promise<number>>>;  // number

複数のユーティリティ型の組み合わせ

ユーティリティ型を連鎖させて、複雑な変換を行います。
type SafeInput<T> = Readonly<Partial<NonNullable<T>>>;

ユーティリティ型は単なる型エイリアス

すべての組み込みユーティリティ型は、マップ型、条件付き型、infer を使って実装されています。独自のユーティリティ型も作成できます。

確認問題

`Exclude<'a' | 'b' | 'c', 'b'>` は何を生成しますか?

まとめ

Readonly は変更を防ぎます。Exclude はユニオンメンバーを削除します。Extract は一致するメンバーだけを残します。NonNullable は null 許容の型を削除します。ReturnType、Parameters、InstanceType は、関数やクラスの型情報を抽出します。

よくある質問

「Readonly、Exclude、Extract、NonNullable」レッスンは無料ですか?

はい。「Readonly、Exclude、Extract、NonNullable」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、TypeScript Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 TypeScript Academyコースには全4レッスンが含まれています。

「Readonly、Exclude、Extract、NonNullable」で何を学びますか?

不変性やフィルタリングに使える、さらに多くのユーティリティ型を適用します。 ブラウザで直接実行するハンズオンコードでTypeScript Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

TypeScript Academyを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのTypeScript Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン4/4です。

「Readonly、Exclude、Extract、NonNullable」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このTypeScript Academyレッスンでコードを書いて実行できますか?

はい。すべてのTypeScript Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. PartialとRequired:オプション性の切り替え
  2. PickとOmit:プロパティの選択
  3. Record:キーと値の型の対応付け
  4. Readonly、Exclude、Extract、NonNullable
← TypeScript Academyに戻る