June 29, 2024 zod

Cara Validasi Boolean Dalam Bentuk String di Zod

Boolean dalam bentuk string yang dimaksud adalah data string yang bentuknya boolean tapi tipenya string seperti “true” atau “false” yang biasanya didapatkan di request query.

Jika datanya seperti itu, maka validasi zod menggunakan coerce.boolean akan menghasilkan true pada nilai “false”. Contoh.

coerce disini sebagai contoh agar nilai “true” dan “false” tidak error

import { z } from "zod"

const bool = z
  .coerce
  .boolean()

bool.parse(true) // true
bool.parse('true') // true 
bool.parse(false) // false
bool.parse('false') // true

Salah satu cara untuk mengatasinya adalah dengan menghilangkan coerce dan menambahkan method literal dengan nilai string true dan false.

Kemudian data yang tervalidasi ditransfrom jika nilainya boolean true atau string “true” maka nilainya true.

import { z } from "zod"

const bool = z
  .union([
    z.boolean(),
    z.literal('true'),
    z.literal('false')
  ])
  .transform(value => value === true || value === 'true')

union digunakan untuk membuat validasi or untuk setiap method di dalamnya

Dengan seperti ini hanya ada 4 jenis value yang dapat diterima yaitu true, false, true, dan false.

Jika true atau true maka nilainya akan true, jika false atau false maka nilainya akan false.

bool.parse(true) // true
bool.parse('true') // true 
bool.parse(false) // false
bool.parse('false') // false

Sumber: