File tree Expand file tree Collapse file tree 4 files changed +50
-3
lines changed
react/test-app/Pages/FormHelper/TypeScript
svelte/test-app/Pages/FormHelper/TypeScript
vue3/test-app/Pages/FormHelper/TypeScript Expand file tree Collapse file tree 4 files changed +50
-3
lines changed Original file line number Diff line number Diff line change @@ -57,22 +57,27 @@ export type FormDataType<T extends object> = {
5757 : never
5858}
5959
60+ // Note: `0 extends 1 & T` detects `any` type to prevent infinite recursion.
6061export type FormDataKeys < T > = T extends Function | FormDataConvertibleValue
6162 ? never
6263 : T extends Array < unknown >
6364 ? number extends T [ 'length' ]
64- ? `${number } ` | `${number } .${FormDataKeys < T [ number ] > } `
65+ ? `${number } ` | ( 0 extends 1 & T [ number ] ? never : `${number } .${FormDataKeys < T [ number ] > } `)
6566 :
6667 | Extract < keyof T , `${number } `>
6768 | {
68- [ Key in Extract < keyof T , `${number } `> ] : `${Key & string } .${FormDataKeys < T [ Key & string ] > & string } `
69+ [ Key in Extract < keyof T , `${number } `> ] : 0 extends 1 & T [ Key & string ]
70+ ? never
71+ : `${Key & string } .${FormDataKeys < T [ Key & string ] > & string } `
6972 } [ Extract < keyof T , `${number } `> ]
7073 : string extends keyof T
7174 ? string
7275 :
7376 | Extract < keyof T , string >
7477 | {
75- [ Key in Extract < keyof T , string > ] : `${Key } .${FormDataKeys < T [ Key ] > & string } `
78+ [ Key in Extract < keyof T , string > ] : 0 extends 1 & T [ Key ]
79+ ? never
80+ : `${Key } .${FormDataKeys < T [ Key ] > & string } `
7681 } [ Extract < keyof T , string > ]
7782
7883type PartialFormDataErrors < T > = {
Original file line number Diff line number Diff line change 1+ // This component is used for checking the TypeScript implementation; there is no Playwright test depending on it.
2+ import { useForm } from '@inertiajs/react'
3+
4+ export default function Any ( ) {
5+ const form = useForm < { name : any } > ( { name : null } ) // eslint-disable-line @typescript-eslint/no-explicit-any
6+
7+ form . setData ( 'name' , 0 )
8+ form . setData ( 'name' , 'test' )
9+ form . setData ( 'name' , true )
10+ form . setData ( 'name' , null )
11+ form . setData ( 'name' , {
12+ key : 'value' ,
13+ } )
14+ }
Original file line number Diff line number Diff line change 1+ <script lang =" ts" >
2+ // This component is used for checking the TypeScript implementation; there is no Playwright test depending on it.
3+ import { useForm } from ' @inertiajs/svelte'
4+
5+ const form = useForm <{ name: any }>({ name: null }) // eslint-disable-line @typescript-eslint/no-explicit-any
6+
7+ $form .name = 0
8+ $form .name = ' test'
9+ $form .name = true
10+ $form .name = null
11+ $form .name = {
12+ key: ' value' ,
13+ }
14+ </script >
Original file line number Diff line number Diff line change 1+ <script setup lang="ts">
2+ // This component is used for checking the TypeScript implementation; there is no Playwright test depending on it.
3+ import { useForm } from ' @inertiajs/vue3'
4+
5+ const form = useForm <{ name: any }>({ name: null }) // eslint-disable-line @typescript-eslint/no-explicit-any
6+
7+ form .name = 0
8+ form .name = ' test'
9+ form .name = true
10+ form .name = null
11+ form .name = {
12+ key: ' value' ,
13+ }
14+ </script >
You can’t perform that action at this time.
0 commit comments