Open3
z.function().args()で型を生成すると、引数型が(...args: unknown[[])になる。ZodFunction.create()を使おう。
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
と同じなんだった。
でもやっぱり () => void
にしてほしいよね。
その場合はZodFunction.create()
が使えた。
export const fSchema = z.ZodFunction.create(z.tuple([]), z.void())
export type F = z.infer<typeof fSchema>
// type F = () => void
zodで関数スキーマを書くときは、基本的にZodFunction.create()
にしてしまってもよさそう。