instanceofとinによるナローイング
クラスのインスタンスとオブジェクトの形状を絞り込みます。
「instanceofとinによるナローイング」はCoddyKit上の無料TypeScript Academyレッスンです。 これはレッスン2/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはTypeScript Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 TypeScript Academyコースには全4レッスンが含まれています。
はじめに
instanceof による絞り込み
function handle(err: Error | string) {
if (err instanceof Error) {
console.log(err.message); // err: Error
} else {
console.log(err); // err: string
}
}カスタムクラスでの instanceof
class Dog { bark() { return 'Woof'; } }
class Cat { meow() { return 'Meow'; } }
function speak(pet: Dog | Cat) {
if (pet instanceof Dog) pet.bark();
else pet.meow();
}instanceof はインターフェースでは使えない
in 演算子
type Fish = { swim(): void };
type Bird = { fly(): void };
function move(animal: Fish | Bird) {
if ('swim' in animal) animal.swim();
else animal.fly();
}省略可能なプロパティに対する in による絞り込み
type A = { x?: number };
type B = { y: number };
function process(v: A | B) {
if ('x' in v) {
// v: A (has optional x)
}
}instanceof と in の組み合わせ
function describe(v: Error | { message: string }) {
if (v instanceof Error) console.log('Error:', v.stack);
else if ('message' in v) console.log('Object:', v.message);
}判別可能なユニオンでの in
type Square = { side: number };
type Circle = { radius: number };
function area(s: Square | Circle): number {
return 'side' in s ? s.side ** 2 : Math.PI * s.radius ** 2;
}catch ブロックでの instanceof
try {
await fetchData();
} catch (err) {
if (err instanceof NetworkError) { /* retry */ }
else if (err instanceof AuthError) { /* redirect */ }
else throw err;
}Object.prototype チェックと in の比較
絞り込みの優先順位
確認問題
まとめ
よくある質問
「instanceofとinによるナローイング」レッスンは無料ですか?
はい。「instanceofとinによるナローイング」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、TypeScript Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 TypeScript Academyコースには全4レッスンが含まれています。
「instanceofとinによるナローイング」で何を学びますか?
クラスのインスタンスとオブジェクトの形状を絞り込みます。 ブラウザで直接実行するハンズオンコードでTypeScript Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
TypeScript Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのTypeScript Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン2/4です。
「instanceofとinによるナローイング」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このTypeScript Academyレッスンでコードを書いて実行できますか?
はい。すべてのTypeScript Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- typeofと真偽値によるナローイング
- instanceofとinによるナローイング
- ユーザー定義型ガード関数
- neverによる網羅性チェック