function getFormType<TFormData, TOnMount, TOnChange, TOnChangeAsync, TOnBlur, TOnBlurAsync, TOnSubmit, TOnSubmitAsync, TOnDynamic, TOnDynamicAsync, TOnServer, TSubmitMeta>(_formOptions): TanStackFormController<TFormData, TOnMount, TOnChange, TOnChangeAsync, TOnBlur, TOnBlurAsync, TOnSubmit, TOnSubmitAsync, TOnDynamic, TOnDynamicAsync, TOnServer, TSubmitMeta>;Defined in: getFormType.ts:43
A type-only helper that returns a value whose type matches the TanStackFormController instance that would be produced for the given FormOptions. It does not run any logic at runtime.
Use this together with shared formOptions to derive the expected controller type for a form property on a child Lit element, without having to spell out all of TanStackFormController's generics by hand.
TFormData
TOnMount extends FormValidateOrFn<TFormData> | undefined
TOnChange extends FormValidateOrFn<TFormData> | undefined
TOnChangeAsync extends FormAsyncValidateOrFn<TFormData> | undefined
TOnBlur extends FormValidateOrFn<TFormData> | undefined
TOnBlurAsync extends FormAsyncValidateOrFn<TFormData> | undefined
TOnSubmit extends FormValidateOrFn<TFormData> | undefined
TOnSubmitAsync extends FormAsyncValidateOrFn<TFormData> | undefined
TOnDynamic extends FormValidateOrFn<TFormData> | undefined
TOnDynamicAsync extends FormAsyncValidateOrFn<TFormData> | undefined
TOnServer extends FormAsyncValidateOrFn<TFormData> | undefined
TSubmitMeta
FormOptions<TFormData, TOnMount, TOnChange, TOnChangeAsync, TOnBlur, TOnBlurAsync, TOnSubmit, TOnSubmitAsync, TOnDynamic, TOnDynamicAsync, TOnServer, TSubmitMeta>
TanStackFormController<TFormData, TOnMount, TOnChange, TOnChangeAsync, TOnBlur, TOnBlurAsync, TOnSubmit, TOnSubmitAsync, TOnDynamic, TOnDynamicAsync, TOnServer, TSubmitMeta>
import { formOptions, getFormType } from '@tanstack/lit-form'
export const peopleFormOpts = formOptions({
defaultValues: { firstName: '', lastName: '' },
})
// In a child element:
class ChildForm extends LitElement {
@property({ attribute: false })
form!: ReturnType<typeof getFormType<typeof peopleFormOpts.defaultValues, ...>>
}Most users will pass formOptions directly:
const formType = getFormType(peopleFormOpts)
class ChildForm extends LitElement {
@property({ attribute: false })
form!: typeof formType
}