¿Cómo se eliminó la propiedad amable de SquareEvent y CircleEvent?
type EventConfig<Events extends { kind: string }> = { [E in Events as E["kind"]]: (event: E) => void; } type SquareEvent = { kind: "square", x: number, y: number }; type CircleEvent = { kind: "circle", radius: number }; type Config = EventConfig<SquareEvent | CircleEvent> // type Config = { square: (event: SquareEvent) => void; circle: (event: CircleEvent) => void; }Por cierto, puede encontrar este código de ejemplo en la página 131 del Manual de TypeScript
Puede encontrarlo en el Manual de TypeScript, justo después del fragmento que publicó:
// Remove the 'kind' property type RemoveKindField<Type> = { [Property in keyof Type as Exclude<Property, "kind">]: Type[Property] }; interface Circle { kind: "circle"; radius: number; } type KindlessCircle = RemoveKindField<Circle>; type KindlessCircle = { radius: number; }https://www.typescriptlang.org/docs/handbook/2/mapped-types.html#key-remapping-via-as