From d55857ed210ed2539efb34220dee75a756c8a467 Mon Sep 17 00:00:00 2001 From: Thodoris Greasidis Date: Mon, 24 Mar 2025 19:58:48 +0200 Subject: [PATCH 1/2] =?UTF-8?q?=F0=9F=A4=96=20Merge=20PR=20#72188=20[memoi?= =?UTF-8?q?zee]:=20Fix=20the=20return=20type=20of=20delete()=20&=20clear()?= =?UTF-8?q?=20to=20void=20by=20@thgreasi?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- types/memoizee/index.d.ts | 6 ++--- types/memoizee/memoizee-tests.ts | 46 +++++++++++++++++++++++++------- 2 files changed, 40 insertions(+), 12 deletions(-) diff --git a/types/memoizee/index.d.ts b/types/memoizee/index.d.ts index 69ef17b4e4c706..88f79fdada183f 100644 --- a/types/memoizee/index.d.ts +++ b/types/memoizee/index.d.ts @@ -13,9 +13,9 @@ declare namespace memoizee { profileName?: string; } - interface Memoized { - delete: F; - clear: F & (() => void); + interface Memoized any> { + delete: (...args: Parameters) => void; + clear: () => void; } } diff --git a/types/memoizee/memoizee-tests.ts b/types/memoizee/memoizee-tests.ts index 1bceb95bcc8fe5..5c6c6689c4d6ae 100644 --- a/types/memoizee/memoizee-tests.ts +++ b/types/memoizee/memoizee-tests.ts @@ -1,6 +1,8 @@ import memoize = require("memoizee"); -const fn = (one: string, two?: number, three?: any) => {/* ... */}; +const fn = (one: string, two?: number, three?: any) => { + return "test"; +}; let memoized = memoize(fn); memoized("foo", 3, "bar"); @@ -19,11 +21,30 @@ memoized = memoize(fn, { primitive: true }); memoized("/path/one"); memoized("/path/one"); memoized = memoize(fn, { dispose(value: number) {/*…*/} }); -const foo3 = memoized("foo", 3); -const bar7 = memoized("bar", 7); -memoized.clear("foo", 3); // Dispose called with foo3 value -memoized.clear("bar", 7); // Dispose called with bar7 value -memoized.delete("foo", 0); +const foo3: string = memoized("foo", 3); +const bar7: string = memoized("bar", 7); +memoized.delete("foo", 3); // Dispose called with foo3 value +memoized.delete("bar", 7); // Dispose called with bar7 value +memoized.clear(); + +function testIncorrectParameterType(): string { + // @ts-expect-error Expect TypeScript to error when passing parameters of wrong types. + return memoized(3, "foo"); +} +function testIncorrectDeleteParameterType(): void { + // @ts-expect-error Expect TypeScript to error when passing parameters of wrong types. + return memoized.delete(3, "foo"); +} +function testIncorrectClearParameterType(): void { + // @ts-expect-error Expect TypeScript since clear() does not take any parameters. + return memoized.clear("foo", 3); +} +function testDeleteReturnType(a: string, b: number): void { + return memoized.delete(a, b); +} +function testClearReturnType(): void { + return memoized.clear(); +} const mFn = memoize((hash: any) => { // body of memoized function }, { @@ -49,13 +70,20 @@ memoized( { const afn = (a: number, b: number) => { - return new Promise(res => { + return new Promise(res => { res(a + b); }); }; let memoized = memoize(afn, { promise: true }); - memoized(3, 7); - memoized(3, 7); + const foo: Promise = memoized(3, 7); + const bar: Promise = memoized(3, 7); + + function testDeleteReturnType(a: number, b: number): void { + return memoized.delete(a, b); + } + function testClearReturnType(): void { + return memoized.clear(); + } memoized = memoize(afn, { promise: "then" }); memoized(2, 7); From 25cb97e9c276a5b3a921aaf5a7e955d74ddd38fc Mon Sep 17 00:00:00 2001 From: Yahya Jirari <76694551+whygee-dev@users.noreply.github.com> Date: Mon, 24 Mar 2025 23:08:55 +0100 Subject: [PATCH 2/2] =?UTF-8?q?=F0=9F=A4=96=20Merge=20PR=20#72279=20[fixed?= =?UTF-8?q?-data-table-2]=20fix:=20onScrollStart=20and=20onScrollEnd=20arg?= =?UTF-8?q?uments=20typings=20by=20@whygee-dev?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- types/fixed-data-table-2/fixed-data-table-2-tests.tsx | 4 ++-- types/fixed-data-table-2/index.d.ts | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/types/fixed-data-table-2/fixed-data-table-2-tests.tsx b/types/fixed-data-table-2/fixed-data-table-2-tests.tsx index ba89f504a3b5b1..855ac6ba1b95d7 100644 --- a/types/fixed-data-table-2/fixed-data-table-2-tests.tsx +++ b/types/fixed-data-table-2/fixed-data-table-2-tests.tsx @@ -181,8 +181,8 @@ class MyTable5 extends React.Component { headerHeight={50} width={1000} height={500} - onScrollStart={(x: number, y: number) => {}} - onScrollEnd={(x: number, y: number) => {}} + onScrollStart={(x: number, y: number, firstRowIndex: number, lastRowIndex: number) => {}} + onScrollEnd={(x: number, y: number, firstRowIndex: number, lastRowIndex: number) => {}} onContentHeightChange={(newHeight: number) => {}} onRowClick={(event: React.SyntheticEvent, rowIndex: number) => {}} onRowContextMenu={(event: React.SyntheticEvent
, rowIndex: number) => {}} diff --git a/types/fixed-data-table-2/index.d.ts b/types/fixed-data-table-2/index.d.ts index b9297a1bf3ab7e..9d17f34fb93802 100644 --- a/types/fixed-data-table-2/index.d.ts +++ b/types/fixed-data-table-2/index.d.ts @@ -272,15 +272,15 @@ export interface TableProps extends React.ClassAttributes
{ /** * Callback that is called when scrolling starts with current horizontal - * and vertical scroll values. + * and vertical scroll values, as well as the first and last row index. */ - onScrollStart?: ((x: number, y: number) => void) | undefined; + onScrollStart?: ((x: number, y: number, firstRowIndex: number, lastRowIndex: number) => void) | undefined; /** * Callback that is called when scrolling ends or stops with new horizontal - * and vertical scroll values. + * and vertical scroll values, as well as the first and last row index. */ - onScrollEnd?: ((x: number, y: number) => void) | undefined; + onScrollEnd?: ((x: number, y: number, firstRowIndex: number, lastRowIndex: number) => void) | undefined; /** * If enabled scroll events will not be propagated outside of the table.