[[プロパティ (TypeScript)|プロパティ]]を保持しているかによって行う[[Narrowing]]。 ```ts type Obj = {color: "green"} | { name: "hoge" } | { greet: () => "Hello!" } declare const obj: Obj if ("name" in obj) { obj //^? const obj: { name: "hoge"; } } else { obj //^? const obj: { color: "green"; } | { greet: () => "Hello!"; } } ``` <button class="playground"><a href="https://www.typescriptlang.org/play?#code/C4TwDgpgBA8gRgKygXigbwMYHsA2WBOAXFAEQDm+EEAdiQL5QA+6U1AhgLYTEkAWWZCCSgNmaKBSrBiACgCUKAHykAEhBx4AhMLoAoACYQMONpSjZqAZ2BQsiYvAS6AlgDMoMkuy7Dn1W4gKaLpQAU6hAPQRAHoA-LoM6pbQwaF24VBRcQlAA">Playground</a></button>