原文 Intersection Types 交差型は Person & Serializable & Loggable のように複数の型をひとつにまとめたもので、これらの型の全メンバを持ちます。 交差型を使用した mixin の例を以下に示します。 function extend<T, U>(first: T, second: U): T & U { let result = <T & U>{}; for (let id in first) { (<any>result)[id] = (<any>first)[id]; } for (let id in second) { if (!result.hasOwnProperty(id)) { (<any>result)[id] = (<any>second)[id]; } } return result; } class Person { c
![TypeScript Handbook を読む (10. Advanced Types) - Qiita](https://cdn-ak-scissors.b.st-hatena.com/image/square/0f2bd103f8b8b5c8efb1d654bd7219e9371824e9/height=288;version=1;width=512/https%3A%2F%2Fqiita-user-contents.imgix.net%2Fhttps%253A%252F%252Fcdn.qiita.com%252Fassets%252Fpublic%252Farticle-ogp-background-412672c5f0600ab9a64263b751f1bc81.png%3Fixlib%3Drb-4.0.0%26w%3D1200%26mark64%3DaHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTk3MiZoPTM3OCZ0eHQ9VHlwZVNjcmlwdCUyMEhhbmRib29rJTIwJUUzJTgyJTkyJUU4JUFBJUFEJUUzJTgyJTgwJTIwJTI4MTAuJTIwQWR2YW5jZWQlMjBUeXBlcyUyOSZ0eHQtYWxpZ249bGVmdCUyQ3RvcCZ0eHQtY29sb3I9JTIzMjEyMTIxJnR4dC1mb250PUhpcmFnaW5vJTIwU2FucyUyMFc2JnR4dC1zaXplPTU2JnM9OWYwZDY0NWNmODA0ZTY4YTU1ZDc3MTQ0YzJjMjhhNzg%26mark-x%3D142%26mark-y%3D57%26blend64%3DaHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZoPTc2Jnc9NzcwJnR4dD0lNDBtdXJhbmsmdHh0LWNvbG9yPSUyMzIxMjEyMSZ0eHQtZm9udD1IaXJhZ2lubyUyMFNhbnMlMjBXNiZ0eHQtc2l6ZT0zNiZ0eHQtYWxpZ249bGVmdCUyQ3RvcCZzPWRhYzBkY2E0MTZkYjU3NGRkMDk4ODA1ODJiZTE1MmU3%26blend-x%3D142%26blend-y%3D486%26blend-mode%3Dnormal%26s%3Db8d4fc2cb059e46b7097b97c9d370c5e)