Skip to content

Commit 356f579

Browse files
authored
add constructors to mark class types (#2425)
* add constructors to mark class types * prasnier
1 parent 1c6b239 commit 356f579

26 files changed

Lines changed: 362 additions & 27 deletions

src/mark.d.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -482,6 +482,7 @@ export interface MarkOptions {
482482

483483
/** The abstract base class for Mark implementations. */
484484
export class Mark {
485+
constructor(data?: Data, channels?: Record<string, Channel>, options?: MarkOptions, defaults?: MarkOptions);
485486
/**
486487
* Renders a new plot, prepending this mark as the first element of **marks**
487488
* of the specified *options*, and returns the corresponding SVG element, or
@@ -492,8 +493,10 @@ export class Mark {
492493

493494
/** A concrete Mark implementation. */
494495
export class RenderableMark extends Mark {
496+
// Declared as a method rather than a property so that subclasses can override
497+
// it and call super.render(). See https://www.typescriptlang.org/docs/handbook/release-notes/typescript-5-3.html#checks-for-super-property-accesses-on-instance-fields
495498
/** Renders this mark, returning a new SVGElement (or null). */
496-
render: RenderFunction;
499+
render(...args: Parameters<RenderFunction>): ReturnType<RenderFunction>;
497500
}
498501

499502
/** A compound Mark, comprising other marks. */

src/marks/area.d.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -205,4 +205,6 @@ export function areaX(data?: Data, options?: AreaXOptions & AreaLineOptions): Ar
205205
export function areaY(data?: Data, options?: AreaYOptions & AreaLineOptions): Area;
206206

207207
/** The area mark. */
208-
export class Area extends RenderableMark {}
208+
export class Area extends RenderableMark {
209+
constructor(data?: Data, options?: AreaOptions);
210+
}

src/marks/arrow.d.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -111,4 +111,6 @@ export interface ArrowOptions extends MarkOptions {
111111
export function arrow(data?: Data, options?: ArrowOptions): Arrow;
112112

113113
/** The arrow mark. */
114-
export class Arrow extends RenderableMark {}
114+
export class Arrow extends RenderableMark {
115+
constructor(data?: Data, options?: ArrowOptions);
116+
}

src/marks/bar.d.ts

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -203,7 +203,11 @@ export function barX(data?: Data, options?: BarXOptions): BarX;
203203
export function barY(data?: Data, options?: BarYOptions): BarY;
204204

205205
/** The barX mark. */
206-
export class BarX extends RenderableMark {}
206+
export class BarX extends RenderableMark {
207+
constructor(data?: Data, options?: BarXOptions);
208+
}
207209

208210
/** The barY mark. */
209-
export class BarY extends RenderableMark {}
211+
export class BarY extends RenderableMark {
212+
constructor(data?: Data, options?: BarYOptions);
213+
}

src/marks/cell.d.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,4 +71,6 @@ export function cellX(data?: Data, options?: CellOptions): Cell;
7171
export function cellY(data?: Data, options?: CellOptions): Cell;
7272

7373
/** The cell mark. */
74-
export class Cell extends RenderableMark {}
74+
export class Cell extends RenderableMark {
75+
constructor(data?: Data, options?: CellOptions);
76+
}

src/marks/contour.d.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -89,4 +89,6 @@ export function contour(data?: Data, options?: ContourOptions): Contour;
8989
export function contour(options?: ContourOptions): Contour;
9090

9191
/** The contour mark. */
92-
export class Contour extends RenderableMark {}
92+
export class Contour extends RenderableMark {
93+
constructor(data?: Data, options?: ContourOptions);
94+
}

src/marks/density.d.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,4 +51,6 @@ export interface DensityOptions extends MarkOptions {
5151
export function density(data?: Data, options?: DensityOptions): Density;
5252

5353
/** The density mark. */
54-
export class Density extends RenderableMark {}
54+
export class Density extends RenderableMark {
55+
constructor(data?: Data, options?: DensityOptions);
56+
}

src/marks/difference.d.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -97,4 +97,6 @@ export function differenceX(data?: Data, options?: DifferenceOptions): Differenc
9797
export function differenceY(data?: Data, options?: DifferenceOptions): Difference;
9898

9999
/** The difference mark. */
100-
export class Difference extends RenderableMark {}
100+
export class Difference extends RenderableMark {
101+
constructor(data?: Data, options?: DifferenceOptions);
102+
}

src/marks/dot.d.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -144,4 +144,6 @@ export function circle(data?: Data, options?: Omit<DotOptions, "symbol">): Dot;
144144
export function hexagon(data?: Data, options?: Omit<DotOptions, "symbol">): Dot;
145145

146146
/** The dot mark. */
147-
export class Dot extends RenderableMark {}
147+
export class Dot extends RenderableMark {
148+
constructor(data?: Data, options?: DotOptions);
149+
}

src/marks/frame.d.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,4 +20,6 @@ export interface FrameOptions extends MarkOptions, InsetOptions, RectCornerOptio
2020
export function frame(options?: FrameOptions): Frame;
2121

2222
/** The frame decoration mark. */
23-
export class Frame extends RenderableMark {}
23+
export class Frame extends RenderableMark {
24+
constructor(options?: FrameOptions);
25+
}

0 commit comments

Comments
 (0)