From 4a15109fbdf585922cffe5ca89eea8f65365ae8a Mon Sep 17 00:00:00 2001 From: Priyesh Shrivastav Date: Thu, 5 Nov 2026 12:19:51 +0530 Subject: [PATCH 1/2] fix(form-core): preserve FieldWithValue name string type --- .changeset/dark-suits-itch.md | 5 ++++ packages/form-core/src/types.public.ts | 2 +- .../form-core/tests/FieldWithValue.test-d.ts | 28 +++++++++++++++++++ 3 files changed, 34 insertions(+), 1 deletion(-) create mode 100644 .changeset/dark-suits-itch.md create mode 100644 packages/form-core/tests/FieldWithValue.test-d.ts diff --git a/.changeset/dark-suits-itch.md b/.changeset/dark-suits-itch.md new file mode 100644 index 0000000000..28640d294e --- /dev/null +++ b/.changeset/dark-suits-itch.md @@ -0,0 +1,5 @@ +--- +'@tanstack/form-core': patch +--- + +Fix FieldWithValue name type to preserve string typing diff --git a/packages/form-core/src/types.public.ts b/packages/form-core/src/types.public.ts index 0a3f0e913a..58a58b16f0 100644 --- a/packages/form-core/src/types.public.ts +++ b/packages/form-core/src/types.public.ts @@ -50,7 +50,7 @@ export type OneOrMany = TValue | Array * @typeParam TFieldValue - The value type preserved across field reads and update methods. */ export type FieldWithValue = FieldApi< - any, + string, TFieldValue, any, any, diff --git a/packages/form-core/tests/FieldWithValue.test-d.ts b/packages/form-core/tests/FieldWithValue.test-d.ts new file mode 100644 index 0000000000..6e59a44a62 --- /dev/null +++ b/packages/form-core/tests/FieldWithValue.test-d.ts @@ -0,0 +1,28 @@ + +import { describe, expectTypeOf, it } from 'vitest' +import type { FieldWithValue } from '../src' + +describe('FieldWithValue', () => { + it('should preserve string typing for field name', () => { + const field = null as unknown as FieldWithValue + + expectTypeOf().toEqualTypeOf() + expectTypeOf().toEqualTypeOf() + + const validName: string = field.name + + // @ts-expect-error Field name must not be a number + const invalidName: number = field.name + + // @ts-expect-error Field name does not have Number methods + field.name.toFixed() + + // @ts-expect-error Boolean field must not accept a string + field.handleChange('not a boolean') + + field.handleChange(true) + + void validName + void invalidName + }) +}) From 4469563c8df18ef020cc2dbcef993cd7bcb640c7 Mon Sep 17 00:00:00 2001 From: "autofix-ci[bot]" <114827586+autofix-ci[bot]@users.noreply.github.com> Date: Wed, 11 Nov 2026 09:44:36 +0000 Subject: [PATCH 2/2] ci: apply automated fixes and generate docs --- packages/form-core/tests/FieldWithValue.test-d.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/packages/form-core/tests/FieldWithValue.test-d.ts b/packages/form-core/tests/FieldWithValue.test-d.ts index 6e59a44a62..a66fca9c79 100644 --- a/packages/form-core/tests/FieldWithValue.test-d.ts +++ b/packages/form-core/tests/FieldWithValue.test-d.ts @@ -1,4 +1,3 @@ - import { describe, expectTypeOf, it } from 'vitest' import type { FieldWithValue } from '../src'