Open3

z.function().args()で型を生成すると、引数型が(...args: unknown[[])になる。ZodFunction.create()を使おう。

あいや - aiya000あいや - aiya000
export const fSchema = z.function().args().returns(z.void())
export type F = z.infer<typeof fSchema>
// type F = (...args: unknown[]) => void

なんでargs()してるのに(...args: unknown[])になるんだろう?
と思ったけど、よく考えたらTypeScriptの() => Xは、本質的に(...args: unknown[]) => Xと同じなんだった。

あいや - aiya000あいや - aiya000

でもやっぱり () => void にしてほしいよね。
その場合はZodFunction.create()が使えた。

export const fSchema = z.ZodFunction.create(z.tuple([]), z.void())
export type F = z.infer<typeof fSchema>
// type F = () => void
あいや - aiya000あいや - aiya000

zodで関数スキーマを書くときは、基本的にZodFunction.create()にしてしまってもよさそう。