0Pricing
TypeScript Academy · レッスン

strictnessフラグ

strict、noImplicitAny、exactOptionalPropertyTypes、noUncheckedIndexedAccessを有効にして、より安全なコードを書きます

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

導入

目標:主要な strictness フラグを有効にし、その役割を理解します。これらのオプションによってエラーを早期に検出し、IDE のヒントを改善できます。

  • strict
  • noImplicitAny
  • exactOptionalPropertyTypes
  • noUncheckedIndexedAccess

strict + noImplicitAny

strict は複数のチェックをまとめて有効にし、noImplicitAny はデフォルトで any になる、型指定のないパラメータや変数を禁止します。

// tsconfig.json (excerpt)
{
  "compilerOptions": {
    "strict": true,
    "noImplicitAny": true
  }
}

// Effect demo
function sum(a, b) { // Error: implicit any
  return a + b;
}

function sumOk(a: number, b: number): number {
  return a + b;
}

exactOptionalPropertyTypes

exactOptionalPropertyTypes は、存在しない 場合と 存在するが undefined の場合を区別します。API のモデル化に特に役立ちます。

// exactOptionalPropertyTypes: true
interface User { name?: string }

const u1: User = {};          // ok: name is absent
const u2: User = { name: undefined }; // Error when exactOptionalPropertyTypes is true

function greet(u: User) {
  if ("name" in u) {
    // name exists but could be undefined without this flag
    console.log("Hi", u.name);
  }
}

インデックスアクセス(配列)

配列へのインデックスアクセスの結果は T | undefined になります。実行時のクラッシュを避けるため、値を使う前に確認してください。

// noUncheckedIndexedAccess: true
const xs: number[] = [1,2,3];
const maybe = xs[5]; // type: number | undefined
if (maybe !== undefined) {
  console.log(maybe.toFixed(0));
}

インデックスアクセス(マップ)

オブジェクトと Record<K,V> のインデックスアクセスの結果には、存在を確認するまで undefined が含まれます。

// Also affects records/maps
const byId: Record<string, { id: string }> = {};
const item = byId["x"]; // { id: string } | undefined
if (item) {
  console.log(item.id);
}

strict プリセット

まず strict で始め、必要な場合にのみ緩和します。これらのフラグは、新しいコードに最小限のノイズでよくあるバグを防ぎます。

// tsconfig.json (excerpt)
{
  "compilerOptions": {
    "strict": true,
    "noImplicitAny": true,
    "exactOptionalPropertyTypes": true,
    "noUncheckedIndexedAccess": true
  }
}

インデックスアクセスの確認

簡単な確認:noUncheckedIndexedAccess は何を変更しますか?

振り返り

振り返り:strict はより安全なデフォルトを有効にし、noImplicitAny は不足している型を検出します。exactOptionalPropertyTypes はオプショナルフィールドを正確にモデル化し、noUncheckedIndexedAccess は存在確認を必須にします。

よくある質問

「strictnessフラグ」レッスンは無料ですか?

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

「strictnessフラグ」で何を学びますか?

strict、noImplicitAny、exactOptionalPropertyTypes、noUncheckedIndexedAccessを有効にして、より安全なコードを書きます ブラウザで直接実行するハンズオンコードでTypeScript Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

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

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

「strictnessフラグ」レッスンにはどのくらい時間がかかりますか?

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

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

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

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

  1. strictnessフラグ
  2. Target、lib、module、JSXの設定
  3. Project References(入門)
← TypeScript Academyに戻る