コンパイラに型を指示する。実行時には影響なし
// ── as: 型アサーション(「この型として扱って」と伝える)──
// TypeScript が型を判断できない場合に使う
const input = document.getElementById('email') as HTMLInputElement;
// as HTMLInputElement を付けると .value が使えるようになる
console.log(input.value);
// ⚠️ as は型チェックをスキップするので乱用注意
// 間違った型を指定しても実行時エラーになる可能性がある
// ── ! Non-null assertion(「null/undefined ではない」と断言)──
const element = document.getElementById('app')!;
// ! を付けると null チェックが不要になる
element.style.display = 'none';
// ⚠️ 実際に null だったら実行時エラーになる
// ── satisfies: 型チェックしつつ型推論を維持(TS4.9〜)─
const config = {
port: 3000, // number として推論が維持される
host: 'localhost', // string として推論が維持される
} satisfies Record<string, string | number>;
// satisfies は「この型に準拠しているか確認する」だけで
// 型を変えない点が as と異なる型推論で解決できない場合の最終手段として使う。過度な使用は型安全性を下げる。satisfiesは型チェックしながら推論を保持する。