diff --git a/frontend/pages/item/[id]/index/edit.vue b/frontend/pages/item/[id]/index/edit.vue index f40ce91..7479df7 100644 --- a/frontend/pages/item/[id]/index/edit.vue +++ b/frontend/pages/item/[id]/index/edit.vue @@ -75,6 +75,7 @@ toast.success("Item saved"); navigateTo("/item/" + itemId.value); } + type NoUndefinedField = { [P in keyof T]-?: NoUndefinedField> }; type StringKeys = { [k in keyof T]: T[k] extends string ? k : never }[keyof T]; type OnlyString = { [k in StringKeys]: string }; @@ -86,13 +87,13 @@ type: "text" | "textarea"; label: string; // key of ItemOut where the value is a string - ref: keyof OnlyString; + ref: keyof OnlyString>; }; type NumberFormField = { type: "number"; label: string; - ref: keyof OnlyNumber | keyof OnlyString; + ref: keyof OnlyNumber> | keyof OnlyString>; }; // https://stackoverflow.com/questions/50851263/how-do-i-require-a-keyof-to-be-for-a-property-of-a-specific-type @@ -103,7 +104,7 @@ interface BoolFormField { type: "checkbox"; label: string; - ref: keyof OnlyBoolean; + ref: keyof OnlyBoolean>; } type DateKeys = { [k in keyof T]: T[k] extends Date | string ? k : never }[keyof T]; @@ -112,7 +113,7 @@ type DateFormField = { type: "date"; label: string; - ref: keyof OnlyDate; + ref: keyof OnlyDate>; }; type FormField = TextFormField | BoolFormField | DateFormField | NumberFormField; @@ -184,6 +185,7 @@ { type: "date", label: "Purchase Date", + // @ts-expect-error - we know this is a date ref: "purchaseTime", }, ]; @@ -197,6 +199,7 @@ { type: "date", label: "Warranty Expires", + // @ts-expect-error - we know this is a date ref: "warrantyExpires", }, { @@ -220,6 +223,7 @@ { type: "date", label: "Sold At", + // @ts-expect-error - we know this is a date ref: "soldTime", }, ];