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フィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- strictnessフラグ
- Target、lib、module、JSXの設定
- Project References(入門)