From 3fa7bb1b711f111d7b04a51bc83996ad0570e300 Mon Sep 17 00:00:00 2001 From: "zhongchao.xcz" <1085131904@qq.com> Date: Sun, 11 Aug 2024 13:47:45 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E4=BF=AE=E5=A4=8D=E5=8F=91=E5=8C=85?= =?UTF-8?q?=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- package.json | 2 +- packages/npm/package/package.json | 1 - packages/npm/publish/package.json | 1 - packages/run/task/package.json | 1 - packages/run/task/src/index.ts | 23 ++++++++++++++--------- pnpm-lock.yaml | 3 ++- 6 files changed, 17 insertions(+), 14 deletions(-) diff --git a/package.json b/package.json index b761351..3a5922d 100644 --- a/package.json +++ b/package.json @@ -56,7 +56,7 @@ "npm-run-all": "^4.1.5", "prettier": "^2.8.8", "rimraf": "^5.0.1", - "simple-git-hooks": "^2.8.1", + "simple-git-hooks": "^2.11.1", "typescript": "^5.1.6", "vitest": "^0.33.0", "zx": "^7.2.3" diff --git a/packages/npm/package/package.json b/packages/npm/package/package.json index 76c9790..8e2a39d 100644 --- a/packages/npm/package/package.json +++ b/packages/npm/package/package.json @@ -21,7 +21,6 @@ "build": "tsup", "test": "vitest", "preinstall": "npx only-allow pnpm", - "postinstall": "simple-git-hooks", "typecheck": "tsc -p scripts --noEmit && pnpm -r --parallel run typecheck", "lint": "eslint --cache ./packages/*", "format": "prettier --write --cache .", diff --git a/packages/npm/publish/package.json b/packages/npm/publish/package.json index 84097c1..c95e2a1 100644 --- a/packages/npm/publish/package.json +++ b/packages/npm/publish/package.json @@ -26,7 +26,6 @@ "dev": "tsup --watch", "build": "tsup", "preinstall": "npx only-allow pnpm", - "postinstall": "simple-git-hooks", "typecheck": "tsc -p scripts --noEmit && pnpm -r --parallel run typecheck", "lint": "eslint --cache ./packages/*", "format": "prettier --write --cache .", diff --git a/packages/run/task/package.json b/packages/run/task/package.json index e775b37..c76a9ff 100644 --- a/packages/run/task/package.json +++ b/packages/run/task/package.json @@ -19,7 +19,6 @@ "dev": "tsup --watch", "build": "tsup", "preinstall": "npx only-allow pnpm", - "postinstall": "simple-git-hooks", "typecheck": "tsc -p scripts --noEmit && pnpm -r --parallel run typecheck", "lint": "eslint --cache ./packages/*", "format": "prettier --write --cache .", diff --git a/packages/run/task/src/index.ts b/packages/run/task/src/index.ts index ae3ae4d..43696fb 100644 --- a/packages/run/task/src/index.ts +++ b/packages/run/task/src/index.ts @@ -1,4 +1,8 @@ -type Method = (state: S, n: number, carryFunction?: Function) => S | undefined; +type Method = ( + state: S, + n: number, + carryFunction?: Function, +) => S | undefined; type Methods = Record>; @@ -15,18 +19,20 @@ const fi = >( if (prop in methods) { return (...args: any[]) => { try { + // @ts-ignore const result = methods[prop as keyof T](target, ...args); + if (result === undefined) { console.warn( `Method ${String(prop)} returned undefined, chain interrupted.`, ); - return undefined; // 返回 undefined 以中断链式调用 + return undefined; } } catch (error) { console.error(`Error occurred in method ${String(prop)}:`, error); - return undefined; // 发生错误时中断链式调用 + return undefined; } - return receiver; // 返回代理对象本身,支持链式调用 + return receiver; }; } return Reflect.get(target, prop, receiver); @@ -36,27 +42,26 @@ const fi = >( return proxy as Chainable; }; -// 示例:状态对象包含一个数值 interface ValueState { value: number; } -// 使用泛型创建链式调用对象实例 const chainable = fi>( { value: 0 }, + // @ts-ignore { add, subtract, multiply, divide, testInterrupt }, ); -// 使用链式调用执行一系列计算 (包含错误处理) +// @ts-ignore const result = chainable .add(10) .subtract(5) .multiply(4) - .testInterrupt(100) // 这里会触发中断,后续操作不再执行 + .testInterrupt(100) ?.add(10); if (result) { - console.log(result.value); // 如果链式调用没有被中断,输出最终结果 + console.log(result.value); } else { console.log('链式调用被中断'); } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 8435848..94b49bc 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -19,7 +19,7 @@ importers: npm-run-all: ^4.1.5 prettier: ^2.8.8 rimraf: ^5.0.1 - simple-git-hooks: ^2.8.1 + simple-git-hooks: ^2.11.1 typescript: ^5.1.6 vitest: ^0.33.0 zx: ^7.2.3 @@ -6796,6 +6796,7 @@ packages: /simple-git-hooks/2.11.1: resolution: {integrity: sha512-tgqwPUMDcNDhuf1Xf6KTUsyeqGdgKMhzaH4PAZZuzguOgTl5uuyeYe/8mWgAr6IBxB5V06uqEf6Dy37gIWDtDg==} + hasBin: true requiresBuild: true dev: true