The following code:
export type Partial2DPoint = { x: number } | { y: number }
export interface Partial3DPoint extends Par
(I'm answering my own question) This is because you cannot extend a union type using an interface. You must use type alias:
export type Partial2DPoint = { x: number } | { y: number }
export type Partial3DPoint = Partial2DPoint & { z: number }
See this answer:
A class can implement an interface or type alias, both in the same exact way. Note however that a class and interface are considered static blueprints. Therefore, they can not implement / extend a type alias that names a union type.