TypeScript & 是的 错误:类型 'Reference<unknown>' 的参数不能分配给类型 'number | Reference<number>' 的



在TypeScript中使用yupv0.32.8时,我们得到TS错误消息

类型为"Reference"的实参不能赋值给类型为"number | Reference"的形参。类型"Reference"不能赋值给类型"Reference"。类型'unknown'不能赋值给类型'number'.ts(2345)

当我们试图将Yup.ref()函数与Yup.moreThan()一起使用时,例如在这个不使用TypeScript的SO问题中。

为什么在使用TypeScript时会出现这个错误,我们如何修复它?谢谢!

import * as Yup from 'yup';
const schema = Yup.object().shape({
minPrice: Yup
.number()
.positive('Must be positive')
.integer('Must be an integer')
.required('Required'),
maxPrice: Yup
.number()
.positive('Must be positive')
.integer('Must be an integer')
.moreThan(Yup.ref('minPrice'))     // <- ERROR HERE!
.required('Required'),
})

更新:

改变

maxPrice: Yup
.number()
.positive('Must be positive')
.integer('Must be an integer')
.moreThan(Yup.ref<number>('minPrice'))
.required('Required'),

导致错误

类型为"Reference"的实参不能赋值给类型为"number | Reference"的形参。类型"Reference"不能赋值给类型"Reference"。类型'unknown'不能赋值给类型'number'。TS2345

您可以为Yup.ref提供泛型类型。默认为unknown,因为moreThan期望Reference<number>而导致错误。

import * as Yup from 'yup';
const schema = Yup.object().shape({
minPrice: Yup
.number()
.positive('Must be positive')
.integer('Must be an integer')
.required('Required'),
maxPrice: Yup
.number()
.positive('Must be positive')
.integer('Must be an integer')
.moreThan(Yup.ref<number>('minPrice'))
.required('Required'),
})

Update:这需要一个尚未发布的yup新版本。在它发布之前,您可以使用:

moreThan(Yup.ref<number>('minPrice') as Reference<number>)

相关内容

最新更新