const schema = z.object({ file: z.custom<FileList>().transform((file) => file[0]), }); type Schema = z.infer<typeof schema>; /* type Schema = { file: File; } */ 解説 z.custom<FileList>() z.custom() を使う理由は明示的に型を指定したいのと、ぱっと見でどんな型かわかるようにしたいからです。 custom の型は以下のように定義されておりジェネリクスを受け取ります。 受け取ったジェネリクスは各メソッドの引数の型として使われています。 export declare const custom: <T>(check?: ((data: unknown) => any) | undefined, params?: