diff --git a/.changeset/upset-tires-retire.md b/.changeset/upset-tires-retire.md new file mode 100644 index 000000000000..18cac46acf20 --- /dev/null +++ b/.changeset/upset-tires-retire.md @@ -0,0 +1,5 @@ +--- +'@sveltejs/kit': patch +--- + +fix: improved the accuracy of the types of the output of `field.as('...')` diff --git a/packages/kit/src/exports/public.d.ts b/packages/kit/src/exports/public.d.ts index 3516689dce67..39174438f805 100644 --- a/packages/kit/src/exports/public.d.ts +++ b/packages/kit/src/exports/public.d.ts @@ -1865,13 +1865,28 @@ type InputElementProps = T extends 'checkbox' | 'r get files(): FileList | null; set files(v: FileList | null); } - : { - name: string; - type: T; - 'aria-invalid': boolean | 'false' | 'true' | undefined; - get value(): string | number; - set value(v: string | number); - }; + : T extends 'select' | 'select multiple' + ? { + name: string; + multiple: T extends 'select' ? false : true; + 'aria-invalid': boolean | 'false' | 'true' | undefined; + get value(): string | number; + set value(v: string | number); + } + : T extends 'text' + ? { + name: string; + 'aria-invalid': boolean | 'false' | 'true' | undefined; + get value(): string | number; + set value(v: string | number); + } + : { + name: string; + type: T; + 'aria-invalid': boolean | 'false' | 'true' | undefined; + get value(): string | number; + set value(v: string | number); + }; type RemoteFormFieldMethods = { /** The values that will be submitted */ diff --git a/packages/kit/types/index.d.ts b/packages/kit/types/index.d.ts index 0ddf7ca08844..548bc7a78d83 100644 --- a/packages/kit/types/index.d.ts +++ b/packages/kit/types/index.d.ts @@ -1841,13 +1841,28 @@ declare module '@sveltejs/kit' { get files(): FileList | null; set files(v: FileList | null); } - : { - name: string; - type: T; - 'aria-invalid': boolean | 'false' | 'true' | undefined; - get value(): string | number; - set value(v: string | number); - }; + : T extends 'select' | 'select multiple' + ? { + name: string; + multiple: T extends 'select' ? false : true; + 'aria-invalid': boolean | 'false' | 'true' | undefined; + get value(): string | number; + set value(v: string | number); + } + : T extends 'text' + ? { + name: string; + 'aria-invalid': boolean | 'false' | 'true' | undefined; + get value(): string | number; + set value(v: string | number); + } + : { + name: string; + type: T; + 'aria-invalid': boolean | 'false' | 'true' | undefined; + get value(): string | number; + set value(v: string | number); + }; type RemoteFormFieldMethods = { /** The values that will be submitted */