From 0f33fcd446a02f18933a7dece165fc3683a7c479 Mon Sep 17 00:00:00 2001 From: Dominic Go <18517029+dominicstop@users.noreply.github.com> Date: Tue, 10 Jan 2023 05:22:25 +0800 Subject: [PATCH] =?UTF-8?q?=E2=AD=90=EF=B8=8F=20Impl:=20Types=20-=20Add=20?= =?UTF-8?q?Types=20for=20`helpers.ts`?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/functions/helpers.ts | 46 ++++++++++++++++++++++------------------ 1 file changed, 25 insertions(+), 21 deletions(-) diff --git a/src/functions/helpers.ts b/src/functions/helpers.ts index 8e8c4cfb..adc0e7de 100644 --- a/src/functions/helpers.ts +++ b/src/functions/helpers.ts @@ -1,37 +1,41 @@ - -//wrapper func for setstate that returns a promise -export function setStateAsync(that, newState) { - return new Promise((resolve) => { - that.setState(newState, () => { - resolve(); - }); +/** wrapper func for setState that returns a promise */ +// eslint-disable-next-line consistent-this +export function setStateAsync( + that: React.Component, + newState: T | ((prevState: T) => T) +) { + return new Promise((resolve) => { + that.setState(newState, () => { + resolve(); + }); }); -}; +} -//wrapper for timeout that returns a promise -export function timeout(ms) { - return new Promise(resolve => { +/** wrapper for timeout that returns a promise */ +export function timeout(ms: number) { + return new Promise((resolve) => { const timeoutID = setTimeout(() => { clearTimeout(timeoutID); resolve(); - }, ms) + }, ms); }); -}; +} -export function promiseWithTimeout(ms, promise){ +/** Wraps a promise that will reject if not not resolved in milliseconds */ +export function promiseWithTimeout(ms: number, promise: Promise) { // Create a promise that rejects in milliseconds - const timeoutPromise = new Promise((resolve, reject) => { + const timeoutPromise = new Promise((_, reject) => { const timeoutID = setTimeout(() => { clearTimeout(timeoutID); - reject(`Promise timed out in ${ms} ms.`) + reject(`Promise timed out in ${ms} ms.`); }, ms); }); // Returns a race between our timeout and the passed in promise return Promise.race([promise, timeoutPromise]); -}; +} -export function isObject(value) { - const type = typeof value - return value != null && (type === 'object' || type === 'function') -}; \ No newline at end of file +export function isObject(value: unknown): value is object { + const type = typeof value; + return value != null && (type === 'object' || type === 'function'); +}