From bf58d8657d81be0a0ddb3d6d6e0650c5e48b2760 Mon Sep 17 00:00:00 2001 From: EnixCoda Date: Fri, 16 Dec 2022 18:19:19 +0800 Subject: [PATCH] build: upgrade typescript --- package.json | 2 +- src/utils/general.ts | 23 ++++++++++++----------- src/utils/hooks/useUpdateReason.ts | 2 +- src/utils/storageHelper.ts | 2 +- yarn.lock | 8 ++++---- 5 files changed, 19 insertions(+), 18 deletions(-) diff --git a/package.json b/package.json index 95595c1..d636f21 100644 --- a/package.json +++ b/package.json @@ -89,7 +89,7 @@ "raw-loader": "^4.0.0", "sass": "^1.26.2", "sass-loader": "^8.0.2", - "typescript": "^4.7.2", + "typescript": "^4.9.4", "uglifyjs-webpack-plugin": "^2.1.2", "url-loader": "^1.1.2", "web-ext": "^7.1.1", diff --git a/src/utils/general.ts b/src/utils/general.ts index a7baa40..bfd8fe8 100644 --- a/src/utils/general.ts +++ b/src/utils/general.ts @@ -14,16 +14,14 @@ export function subIO(io: IO, field: K): IO { } } -export function pick(source: T, keys: string[]): Partial { - if (keys && typeof keys === 'object') { - return (Array.isArray(keys) ? keys : Object.keys(keys)).reduce((copy, key) => { - if (key in source) { - copy[key as keyof T] = source[key as keyof T] - } - return copy - }, {} as Partial) - } - return {} as Partial +export function pick, Key extends keyof T>( + source: T, + keys: Key[], +): Partial { + return keys.reduce((copy, key) => { + if (key in source) copy[key] = source[key] + return copy + }, {} as Partial) } export enum OperatingSystems { @@ -218,7 +216,10 @@ export function resolveDiffGraphMeta(additions: number, deletions: number, chang return { g, r, w } } -export function forOf(target: T, callback: (key: K, value: T[K]) => R) { +export function forOf, R>( + target: T, + callback: (key: K, value: T[K]) => R, +) { for (const key of Object.keys(target)) { const $key = key as keyof typeof target const r = callback($key, target[$key]) diff --git a/src/utils/hooks/useUpdateReason.ts b/src/utils/hooks/useUpdateReason.ts index 5b3abf2..6775636 100644 --- a/src/utils/hooks/useUpdateReason.ts +++ b/src/utils/hooks/useUpdateReason.ts @@ -1,7 +1,7 @@ import { IN_PRODUCTION_MODE } from 'env' import * as React from 'react' -export function useUpdateReason

(props: P) { +export function useUpdateReason

>(props: P) { const lastPropsRef = React.useRef

(props) React.useEffect(() => { if (IN_PRODUCTION_MODE) return diff --git a/src/utils/storageHelper.ts b/src/utils/storageHelper.ts index f677c0c..e136228 100644 --- a/src/utils/storageHelper.ts +++ b/src/utils/storageHelper.ts @@ -20,7 +20,7 @@ async function get(mapping: string | string[] | null = nul return (await localStorage.get(mapping || undefined)) as T | undefined } -function set(value: T): Promise | void { +function set>(value: T): Promise | void { return localStorage.set(value) } diff --git a/yarn.lock b/yarn.lock index 94a62ab..116d425 100644 --- a/yarn.lock +++ b/yarn.lock @@ -11821,10 +11821,10 @@ typedarray@^0.0.6: resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c= -typescript@^4.7.2: - version "4.7.2" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.7.2.tgz#1f9aa2ceb9af87cca227813b4310fff0b51593c4" - integrity sha512-Mamb1iX2FDUpcTRzltPxgWMKy3fhg0TN378ylbktPGPK/99KbDtMQ4W1hwgsbPAsG3a0xKa1vmw4VKZQbkvz5A== +typescript@^4.9.4: + version "4.9.4" + resolved "https://registry.npmmirror.com/typescript/-/typescript-4.9.4.tgz#a2a3d2756c079abda241d75f149df9d561091e78" + integrity sha512-Uz+dTXYzxXXbsFpM86Wh3dKCxrQqUcVMxwU54orwlJjOpO3ao8L7j5lH+dWfTwgCwIuM9GQ2kvVotzYJMXTBZg== uglify-js@^3.6.0: version "3.6.0"