class Circle extends Schema.Class<Circle>('Circle')({ radius: Schema.Number }) {}
class Square extends Schema.Class<Square>('Square')({ sideLength: Schema.Number }) {}
const DiscriminatedShape = Schema.Union(
Circle.pipe(Schema.attachPropertySignature("kind", "circle")),
Square.pipe(Schema.attachPropertySignature("kind", "square"))
)
class Circle extends Schema.Class<Circle>('Circle')({ radius: Schema.Number }) {}
class Square extends Schema.Class<Square>('Square')({ sideLength: Schema.Number }) {}
const DiscriminatedShape = Schema.Union(
Circle.pipe(Schema.attachPropertySignature("kind", "circle")),
Square.pipe(Schema.attachPropertySignature("kind", "square"))
)