[[プロパティ (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>