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. 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);