Ported Event to TypeScript