{"blog_url":"https://www.pandanoir.info/","author_name":"panda_noir","width":"100%","published":"2023-07-06 22:01:22","blog_title":"Panda Noir","title":"pubsub \u30d1\u30bf\u30fc\u30f3\u306e\u73fe\u6642\u70b9\u3067\u306e\u30d9\u30b9\u30c8\u30d7\u30e9\u30af\u30c6\u30a3\u30b9","categories":["TypeScript","JavaScript"],"author_url":"https://blog.hatena.ne.jp/panda_noir/","type":"rich","description":"\u4ee5\u524dpubsub \u30d1\u30bf\u30fc\u30f3\u306e\u30d9\u30bf\u30fc\u30d7\u30e9\u30af\u30c6\u30a3\u30b9\u3092\u8003\u3048\u305f\u3093\u3067\u3059\u304c\u3001\u3088\u304f\u8003\u3048\u305f\u3089\u30a4\u30d9\u30f3\u30c8\u540d\u3092\u8a2d\u5b9a\u3059\u308b\u5fc5\u8981\u306a\u304b\u3063\u305f\u3067\u3059\u3002 \u3053\u308c\u3067\u3088\u3055\u305d\u3046\u2193 class PubSub<Payload extends unknown[]> { private listeners: ((...payload: Payload) => void)[] = []; subscribe(callback: (...payload: Payload) => void) { this.listeners.push(callback); } unsubscribe(callback: (...payload: Payload) =>\u2026","url":"https://www.pandanoir.info/entry/2023/07/06/220122","provider_name":"Hatena Blog","image_url":null,"version":"1.0","height":"190","provider_url":"https://hatena.blog","html":"<iframe src=\"https://hatenablog-parts.com/embed?url=https%3A%2F%2Fwww.pandanoir.info%2Fentry%2F2023%2F07%2F06%2F220122\" title=\"pubsub \u30d1\u30bf\u30fc\u30f3\u306e\u73fe\u6642\u70b9\u3067\u306e\u30d9\u30b9\u30c8\u30d7\u30e9\u30af\u30c6\u30a3\u30b9 - Panda Noir\" class=\"embed-card embed-blogcard\" scrolling=\"no\" frameborder=\"0\" style=\"display: block; width: 100%; height: 190px; max-width: 500px; margin: 10px 0px;\"></iframe>"}