enum EventType { Mouse, Keyboard }interface Event { timestamp: number; }interface MouseEvent extends Event { xa : number; yb: number }interface KeyEvent extends Event { keyCode: number }function listenEvent(eventType: EventType, handler: (n: Event) => void) { /* ... */}// Unsound, but useful and common 不健全的 但是有用的和普遍的listenEvent(EventType.Mouse, (e: MouseEvent) => console.log(e.x + ',' + e.y));// Undesirable alternatives in presence of soundness 不可靠的替代品listenEvent(EventType.Mouse, (e: Event) => console.log((e).x + ',' + ( e).y));listenEvent(EventType.Mouse, <(e: Event) => void> ((e: MouseEvent) => console.log(e.x + ',' + e.y)));// Still disallowed (clear error). Type safety enforced for wholly incompatible types// 还不允许(清晰的错误)。完全不兼容类型强制执行的类型安全listenEvent(EventType.Mouse, (e: number) => console.log(e));