```
/** An append-only log of timestamped events. */
export class EventLog {
  #events: Event[];

  /** Append one event. */
  record(event: Event): void {
    if (!("name" in event && typeof event.name === "string" && "timestamp" in event && typeof event.timestamp === "number")) {
      throw new Error("Invalid event format");
    }
    this.#events.push(event);
  }

  /** Every event at or after the given timestamp, in insertion order. */
  since(timestamp: number): Event[] {
    return this.#events.filter((event) => event.timestamp >= timestamp);
  }
}

export interface Event { name: string; timestamp: number }
```

This solution includes type annotations for the `EventLog` class and its methods as per the task requirements. It checks if an `event` passed to `record` has the correct properties (`name` and `timestamp`) before appending it to the log.