From f1eb17f66c75f09e884a41be821cccef363ecee7 Mon Sep 17 00:00:00 2001
From: Linca <41134017+Lhcfl@users.noreply.github.com>
Date: Wed, 6 Nov 2024 21:01:58 +0800
Subject: [PATCH] chore: little type trick in pizzax.ts (#14891)

Make `makeGetterSetter` take the correct type associated with getter and setter
---
 packages/frontend/src/pizzax.ts | 12 ++++++++----
 1 file changed, 8 insertions(+), 4 deletions(-)

diff --git a/packages/frontend/src/pizzax.ts b/packages/frontend/src/pizzax.ts
index ac325e923f..7740fe0d39 100644
--- a/packages/frontend/src/pizzax.ts
+++ b/packages/frontend/src/pizzax.ts
@@ -241,9 +241,13 @@ export class Storage<T extends StateDef> {
 	 * 特定のキーの、簡易的なgetter/setterを作ります
 	 * 主にvue上で設定コントロールのmodelとして使う用
 	 */
-	public makeGetterSetter<K extends keyof T>(key: K, getter?: (v: T[K]) => unknown, setter?: (v: unknown) => T[K]): {
-		get: () => T[K]['default'];
-		set: (value: T[K]['default']) => void;
+	public makeGetterSetter<K extends keyof T, R = T[K]['default']>(
+		key: K,
+		getter?: (v: T[K]['default']) => R,
+		setter?: (v: R) => T[K]['default'],
+	): {
+		get: () => R;
+		set: (value: R) => void;
 	} {
 		const valueRef = ref(this.state[key]);
 
@@ -265,7 +269,7 @@ export class Storage<T extends StateDef> {
 					return valueRef.value;
 				}
 			},
-			set: (value: unknown) => {
+			set: (value) => {
 				const val = setter ? setter(value) : value;
 				this.set(key, val);
 				valueRef.value = val;