{"author_url":"https://blog.hatena.ne.jp/WCt377N61X/","html":"<iframe src=\"https://hatenablog-parts.com/embed?url=https%3A%2F%2Ftech.legalscape.co.jp%2Fentry%2F2025%2F10%2F24%2F144539\" title=\"TypeScript \u306f Structural Type System \u3067\u306f\u306a\u3044\u5834\u5408\u304c\u3042\u308b - Legalscape\u30c6\u30c3\u30af\u30d6\u30ed\u30b0\" class=\"embed-card embed-blogcard\" scrolling=\"no\" frameborder=\"0\" style=\"display: block; width: 100%; height: 190px; max-width: 500px; margin: 10px 0px;\"></iframe>","url":"https://tech.legalscape.co.jp/entry/2025/10/24/144539","categories":["TypeScript"],"title":"TypeScript \u306f Structural Type System \u3067\u306f\u306a\u3044\u5834\u5408\u304c\u3042\u308b","provider_name":"Hatena Blog","height":"190","description":"Legalscape \u306e\u3057\u308d\u304f\u307e\u3067\u3059\u3002 TypeScript \u306e Type System \u3067\u306f Nominal \u306a\u6bd4\u8f03\u304c\u7528\u3044\u3089\u308c\u308b\u3053\u3068\u304c\u3042\u308a\u307e\u3059\u3002 \u4f8b class Product { private name: string; } class User { private name: string; } let p = new Product(); let u = new User(); // Type 'User' is not assignable to type 'Product'. // Types have separate declarations of a private pro\u2026","published":"2025-10-24 14:45:39","provider_url":"https://hatena.blog","image_url":"https://cdn-ak.f.st-hatena.com/images/fotolife/W/WCt377N61X/20251028/20251028132549.jpg","author_name":"WCt377N61X","blog_url":"https://tech.legalscape.co.jp/","version":"1.0","type":"rich","blog_title":"Legalscape\u30c6\u30c3\u30af\u30d6\u30ed\u30b0","width":"100%"}