Skip to content

Commit 7679f23

Browse files
committed
Refactor type definitions for fromObject parameters
Updated type definitions in types.d.ts to use more precise parameter types for various fromObject methods, improving type safety and clarity. Also added a test for Two.Circle.fromObject in the TypeScript test suite.
1 parent 2c724e1 commit 7679f23

2 files changed

Lines changed: 43 additions & 28 deletions

File tree

tests/typescript/index.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,12 @@ const two = new Two({
77

88
let path;
99

10+
path = Two.Circle.fromObject({
11+
radius: 5,
12+
rotation: Math.PI,
13+
position: { x: 0, y: 0 },
14+
});
15+
1016
path = new Two.Line(5, 5, 10, 10);
1117
two.add(path);
1218

types.d.ts

Lines changed: 37 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -1234,7 +1234,16 @@ declare module 'two.js/src/shape' {
12341234
* @description The foundational transformation object for the Two.js scenegraph.
12351235
*/
12361236
export class Shape extends TwoElement {
1237-
static Properties: string[];
1237+
static Properties: (
1238+
| 'position'
1239+
| 'rotation'
1240+
| 'scale'
1241+
| 'skewX'
1242+
| 'skewY'
1243+
| 'matrix'
1244+
| 'worldMatrix'
1245+
| string
1246+
)[];
12381247
/**
12391248
* @name Two.Shape.fromObject
12401249
* @function
@@ -1260,7 +1269,7 @@ declare module 'two.js/src/shape' {
12601269
scale?: number | { x: number; y: number } | Vector;
12611270
skewX?: number;
12621271
skewY?: number;
1263-
matrix: Parameters<typeof Matrix.fromObject>;
1272+
matrix: Parameters<typeof Matrix.fromObject>[0];
12641273
})
12651274
): Shape;
12661275
/**
@@ -1490,9 +1499,9 @@ declare module 'two.js/src/children' {
14901499
}
14911500
declare module 'two.js/src/group' {
14921501
type ChildParams =
1493-
| Parameters<typeof Path.fromObject>
1494-
| Parameters<typeof Text.fromObject>
1495-
| Parameters<typeof Points.fromObject>;
1502+
| Parameters<typeof Path.fromObject>[0]
1503+
| Parameters<typeof Text.fromObject>[0]
1504+
| Parameters<typeof Points.fromObject>[0];
14961505
/**
14971506
* @name Two.Group
14981507
* @class
@@ -1531,8 +1540,8 @@ declare module 'two.js/src/group' {
15311540
static fromObject(
15321541
obj:
15331542
| object
1534-
| (Parameters<typeof Shape.fromObject> & {
1535-
children?: (ChildParams | Parameters<typeof Group.fromObject>)[];
1543+
| (Parameters<typeof Shape.fromObject>[0] & {
1544+
children?: (ChildParams | Parameters<typeof Group.fromObject>[0])[];
15361545
opacity?: number;
15371546
mask?: ChildParams;
15381547
})
@@ -2075,7 +2084,7 @@ declare module 'two.js/src/effects/stop' {
20752084
static fromObject(
20762085
obj:
20772086
| object
2078-
| (Parameters<typeof TwoElement.fromObject> & {
2087+
| (Parameters<typeof TwoElement.fromObject>[0] & {
20792088
offset?: number;
20802089
color?: string;
20812090
opacity?: number;
@@ -2197,7 +2206,7 @@ declare module 'two.js/src/effects/gradient' {
21972206
static fromObject(
21982207
obj:
21992208
| object
2200-
| (Parameters<typeof TwoElement.fromObject> & {
2209+
| (Parameters<typeof TwoElement.fromObject>[0] & {
22012210
stops?: number[];
22022211
spread?: SpreadProperties;
22032212
units?: UnitsProperties;
@@ -2311,7 +2320,7 @@ declare module 'two.js/src/effects/linear-gradient' {
23112320
static fromObject(
23122321
obj:
23132322
| object
2314-
| (Parameters<typeof Gradient.fromObject> & {
2323+
| (Parameters<typeof Gradient.fromObject>[0] & {
23152324
left?: { x: number; y: number } | Vector;
23162325
right?: { x: number; y: number } | Vector;
23172326
})
@@ -2409,7 +2418,7 @@ declare module 'two.js/src/effects/radial-gradient' {
24092418
static fromObject(
24102419
obj:
24112420
| object
2412-
| (Parameters<typeof Gradient.fromObject> & {
2421+
| (Parameters<typeof Gradient.fromObject>[0] & {
24132422
radius?: number;
24142423
center?: { x: number; y: number } | Vector;
24152424
focal?: { x: number; y: number } | Vector;
@@ -2588,7 +2597,7 @@ declare module 'two.js/src/effects/texture' {
25882597
static fromObject(
25892598
obj:
25902599
| object
2591-
| (Parameters<typeof TwoElement.fromObject> & {
2600+
| (Parameters<typeof TwoElement.fromObject>[0] & {
25922601
src?: string;
25932602
repeat?: RepeatProperties;
25942603
offset?: { x: number; y: number } | Vector;
@@ -2786,7 +2795,7 @@ declare module 'two.js/src/path' {
27862795
static fromObject(
27872796
obj:
27882797
| object
2789-
| (Parameters<typeof Shape.fromObject> & {
2798+
| (Parameters<typeof Shape.fromObject>[0] & {
27902799
vertices?: ({ x: number; y: number } | Anchor | Vector)[];
27912800
fill?: string;
27922801
stroke?: string;
@@ -3290,7 +3299,7 @@ declare module 'two.js/src/shapes/rectangle' {
32903299
static fromObject(
32913300
obj:
32923301
| object
3293-
| (Parameters<typeof Path.fromObject> & {
3302+
| (Parameters<typeof Path.fromObject>[0] & {
32943303
width?: number;
32953304
height?: number;
32963305
origin?: { x: number; y: number } | Vector;
@@ -3404,8 +3413,8 @@ declare module 'two.js/src/effects/image' {
34043413
static fromObject(
34053414
obj:
34063415
| object
3407-
| (Parameters<typeof Rectangle.fromObject> & {
3408-
texture?: Parameters<typeof Texture.fromObject>;
3416+
| (Parameters<typeof Rectangle.fromObject>[0] & {
3417+
texture?: Parameters<typeof Texture.fromObject>[0];
34093418
mode?: ModeProperties;
34103419
})
34113420
): Image;
@@ -3500,8 +3509,8 @@ declare module 'two.js/src/effects/sprite' {
35003509
static fromObject(
35013510
obj:
35023511
| object
3503-
| (Parameters<typeof Rectangle.fromObject> & {
3504-
texture?: Parameters<typeof Texture.fromObject>;
3512+
| (Parameters<typeof Rectangle.fromObject>[0] & {
3513+
texture?: Parameters<typeof Texture.fromObject>[0];
35053514
columns?: number;
35063515
rows?: number;
35073516
frameRate?: number;
@@ -3723,7 +3732,7 @@ declare module 'two.js/src/shapes/circle' {
37233732
static fromObject(
37243733
obj:
37253734
| object
3726-
| (Parameters<typeof Path.fromObject> & {
3735+
| (Parameters<typeof Path.fromObject>[0] & {
37273736
radius?: number;
37283737
})
37293738
): Circle;
@@ -3779,7 +3788,7 @@ declare module 'two.js/src/shapes/ellipse' {
37793788
fromObject(
37803789
obj:
37813790
| object
3782-
| (Parameters<typeof Path.fromObject> & {
3791+
| (Parameters<typeof Path.fromObject>[0] & {
37833792
width?: number;
37843793
height?: number;
37853794
})
@@ -3885,7 +3894,7 @@ declare module 'two.js/src/shapes/rounded-rectangle' {
38853894
fromObject(
38863895
obj:
38873896
| object
3888-
| (Parameters<typeof Path.fromObject> & {
3897+
| (Parameters<typeof Path.fromObject>[0] & {
38893898
width?: number;
38903899
height?: number;
38913900
radius?: number;
@@ -3995,7 +4004,7 @@ declare module 'two.js/src/text' {
39954004
static fromObject(
39964005
obj:
39974006
| object
3998-
| (Parameters<typeof Shape.fromObject> & {
4007+
| (Parameters<typeof Shape.fromObject>[0] & {
39994008
value?: string;
40004009
family?: string;
40014010
size?: number;
@@ -4405,8 +4414,8 @@ declare module 'two.js/src/effects/image-sequence' {
44054414
fromObject(
44064415
obj:
44074416
| object
4408-
| (Parameters<typeof Rectangle.fromObject> & {
4409-
textures?: Parameters<typeof Texture.fromObject>[];
4417+
| (Parameters<typeof Rectangle.fromObject>[0] & {
4418+
textures?: Parameters<typeof Texture.fromObject>[0][];
44104419
frameRate?: number;
44114420
index?: number;
44124421
firstFrame?: number;
@@ -4592,7 +4601,7 @@ declare module 'two.js/src/shapes/arc-segment' {
45924601
fromObject(
45934602
obj:
45944603
| object
4595-
| (Parameters<typeof Path.fromObject> & {
4604+
| (Parameters<typeof Path.fromObject>[0] & {
45964605
startAngle?: number;
45974606
endAngle?: number;
45984607
innerRadius?: number;
@@ -4719,7 +4728,7 @@ declare module 'two.js/src/shapes/points' {
47194728
static fromObject(
47204729
obj:
47214730
| object
4722-
| (Parameters<typeof Shape.fromObject> & {
4731+
| (Parameters<typeof Shape.fromObject>[0] & {
47234732
fill?: string;
47244733
stroke?: string;
47254734
linewidth?: number;
@@ -4970,7 +4979,7 @@ declare module 'two.js/src/shapes/polygon' {
49704979
static fromObject(
49714980
obj:
49724981
| object
4973-
| (Parameters<typeof Path.fromObject> & {
4982+
| (Parameters<typeof Path.fromObject>[0] & {
49744983
width?: number;
49754984
height?: number;
49764985
sides?: number;
@@ -5063,7 +5072,7 @@ declare module 'two.js/src/shapes/star' {
50635072
static fromObject(
50645073
obj:
50655074
| object
5066-
| (Parameters<typeof Path.fromObject> & {
5075+
| (Parameters<typeof Path.fromObject>[0] & {
50675076
innerRadius?: number;
50685077
outerRadius?: number;
50695078
sides?: number;

0 commit comments

Comments
 (0)