From 70f2b11df50cd8ebbc58e96b1f0e2c87e7d6db84 Mon Sep 17 00:00:00 2001 From: roymondchen Date: Fri, 8 Dec 2023 19:47:12 +0800 Subject: [PATCH] =?UTF-8?q?fix(dep):=20get-tagert=E9=9C=80=E8=A6=81?= =?UTF-8?q?=E6=8C=87=E5=AE=9Atype?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/dep/src/Watcher.ts | 25 +++++++++---------------- packages/dep/tests/Watch.spec.ts | 14 +++++++------- 2 files changed, 16 insertions(+), 23 deletions(-) diff --git a/packages/dep/src/Watcher.ts b/packages/dep/src/Watcher.ts index 813f089e..b2e79b45 100644 --- a/packages/dep/src/Watcher.ts +++ b/packages/dep/src/Watcher.ts @@ -40,13 +40,8 @@ export default class Watcher { * @param id target id * @returns Target */ - public getTarget(id: string | number) { - const allTargets = Object.values(this.targetsList); - for (const targets of allTargets) { - if (targets[id]) { - return targets[id]; - } - } + public getTarget(id: string | number, type: string = DepTargetType.DEFAULT) { + return this.getTargets(type)[id]; } /** @@ -54,21 +49,19 @@ export default class Watcher { * @param id target id * @returns boolean */ - public hasTarget(id: string | number) { - return Boolean(this.getTarget(id)); + public hasTarget(id: string | number, type: string = DepTargetType.DEFAULT) { + return Boolean(this.getTarget(id, type)); } /** * 删除指定id的target * @param id target id */ - public removeTarget(id: string | number) { - const allTargets = Object.values(this.targetsList); - for (const targets of allTargets) { - if (targets[id]) { - targets[id].destroy(); - delete targets[id]; - } + public removeTarget(id: string | number, type: string = DepTargetType.DEFAULT) { + const targets = this.getTargets(type); + if (targets[id]) { + targets[id].destroy(); + delete targets[id]; } } diff --git a/packages/dep/tests/Watch.spec.ts b/packages/dep/tests/Watch.spec.ts index e73614f6..03088a77 100644 --- a/packages/dep/tests/Watch.spec.ts +++ b/packages/dep/tests/Watch.spec.ts @@ -19,8 +19,8 @@ describe('Watcher', () => { watcher.addTarget(target); - expect(watcher.getTarget(1)).toBeUndefined(); - expect(watcher.getTarget('target')?.id).toBe('target'); + expect(watcher.getTarget(1, 'target')).toBeUndefined(); + expect(watcher.getTarget('target', 'target')?.id).toBe('target'); expect(Object.keys(watcher.getTargets())).toHaveLength(0); expect(Object.keys(watcher.getTargets('target'))).toHaveLength(1); }); @@ -92,11 +92,11 @@ describe('Watcher', () => { watcher.addTarget(defaultTarget); watcher.addTarget(target); expect(watcher.hasTarget('defaultTarget')).toBeTruthy(); - expect(watcher.hasTarget('target')).toBeTruthy(); + expect(watcher.hasTarget('target', 'targetType')).toBeTruthy(); watcher.removeTargets('targetType'); expect(watcher.hasTarget('defaultTarget')).toBeTruthy(); - expect(watcher.hasTarget('target')).toBeFalsy(); + expect(watcher.hasTarget('target', 'targetType')).toBeFalsy(); }); test('collect', () => { @@ -141,8 +141,8 @@ describe('Watcher', () => { }, ]); - const target1 = watcher.getTarget('collect_1'); - const target2 = watcher.getTarget('collect_2'); + const target1 = watcher.getTarget('collect_1', 'target'); + const target2 = watcher.getTarget('collect_2', 'target'); expect(target1?.deps?.node_1.name).toBe('node'); expect(target2?.deps?.node_1.name).toBe('node'); @@ -226,7 +226,7 @@ describe('Watcher', () => { true, ); - const target1 = watcher.getTarget('collect_1'); + const target1 = watcher.getTarget('collect_1', 'target'); expect(target1?.deps?.node_1.name).toBe('node'); expect(target1?.deps?.node_2.name).toBe('node2');