From 024ce829d776b23b68625d98034ad90a4a7a8819 Mon Sep 17 00:00:00 2001 From: Adam Thompson-Sharpe Date: Sat, 10 Feb 2024 11:07:51 -0500 Subject: [PATCH] [types] Add missing overload for `set` --- types/src/color.d.ts | 8 ++++++-- types/src/set.d.ts | 4 ++++ types/test/set.ts | 6 ++++++ 3 files changed, 16 insertions(+), 2 deletions(-) diff --git a/types/src/color.d.ts b/types/src/color.d.ts index a6398aabc..0477ddaff 100644 --- a/types/src/color.d.ts +++ b/types/src/color.d.ts @@ -2,7 +2,7 @@ import { WHITES } from "./adapt.js"; import defaults from "./defaults.js"; import hooks from "./hooks.js"; import * as util from "./util.js"; -import ColorSpace from "./space.js"; +import ColorSpace, { Ref } from "./space.js"; import SpaceAccessors from "./space-coord-accessors.js"; import { @@ -130,7 +130,6 @@ declare class Color extends SpaceAccessors implements PlainColorObject { // Functions defined using Color.defineFunctions get: ToColorPrototype; getAll: ToColorPrototype; - set: ToColorPrototype; setAll: ToColorPrototype; to: ToColorPrototype; equals: ToColorPrototype; @@ -138,6 +137,11 @@ declare class Color extends SpaceAccessors implements PlainColorObject { toGamut: ToColorPrototype; distance: ToColorPrototype; toString: ToColorPrototype; + + // Must be manually defined due to overloads + // These should always match the signature of the original function + set (prop: Ref, value: number | ((coord: number) => number)): Color; + set (props: Record number)>): Color; } export default Color; diff --git a/types/src/set.d.ts b/types/src/set.d.ts index 4e1fc50cc..08955fc61 100644 --- a/types/src/set.d.ts +++ b/types/src/set.d.ts @@ -6,3 +6,7 @@ export default function set ( prop: Ref, value: number | ((coord: number) => number) ): Color; +export default function set ( + color: ColorTypes, + props: Record number)> +): Color; diff --git a/types/test/set.ts b/types/test/set.ts index 132e8341c..61c2c06b6 100644 --- a/types/test/set.ts +++ b/types/test/set.ts @@ -10,3 +10,9 @@ set("red"); set("red", "foo", 123); // $ExpectType Color set(new Color("red"), ["srgb", "bar"], (_: number) => 123); // $ExpectType Color set(new Color("red"), [sRGB, "bar"], (_: number) => 123); // $ExpectType Color + +// $ExpectType Color +set("red", { + foo: 123, + bar: (_: number) => 123, +});