我正在嘗試使用 Yup 和 TypeScript 中的 react-hook-form 檢查字串是否小于或等于 30 個字符。
我在 SO 上找到了這個例子來檢查字串長度是否 === 5 并且它作業得很好,只是我正在尋找的錯誤處理訊息的型別。
參考的示例驗證在我的架構中應用時按預期作業
title: Yup.string().test('len', 'Title must be exactly 5 characters', val => val?.length === 5).required('Title is required')
但是對我的情況進行更改(檢查字串是否小于或等于 30)我得到一個Object is possibly undefined錯誤,即使我認為?應該涵蓋未定義的情況
title: Yup.string().test('len', 'Title must be less than or equal to 30 characters', val => val?.length <= 30).required('Title is required')
===在這種情況下,使用和有什么不同<=?
謝謝
uj5u.com熱心網友回復:
當valisundefined時,可選鏈也會自動轉換val?.length為undefined。
相等運算子===適用于所有型別的值,包括undefined,因此即使您運行undefined === 15,它在 TypeScript 中仍然有效。
但是,諸如此類的大于和小于運算子<=僅適用于numbers. 如果你嘗試這樣做undefined > 3,TypeScript 會給你一個Object is possibly undefined錯誤。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/409963.html
標籤:
上一篇:為什么自定義驗證訊息會導致我的HTML表單元素保持無效?
下一篇:根據列鍵合并字典中的dfs
