A simple pub/sub Typescript implementation