【发布时间】:2021-09-21 05:07:56
【问题描述】:
我正在尝试将 Yup + Mobx-state-tree 与 Typescript 一起使用……但对于简单的情况,我遇到了错误……
const UserNameModel = types.model({
name: types.string,
});
type UserNameModelSnapshot = SnapshotOut<typeof UserNameModel>;
const riderman: UserNameModelSnapshot = {
name: 'a',
};
// WORKS FINE, riderman.name is a string
// Error on userNameSchema
const userNameSchema: SchemaOf<UserNameModelSnapshot> = yup.object({
name: yup.string().required().defined().min(3),
});
错误
TS2322:类型 'OptionalObjectSchema>; }, Record
, TypeOfShape>; }>>' 不可分配给类型 'ObjectSchemaOf >'。属性“字段”的类型不兼容。类型“{ 名称:DefinedStringSchema >; }' 但在类型 '{ name: BaseSchema ; 中是必需的; [$nonEmptyObject]: BaseSchema | ArraySchema |懒惰<...>,AnyObject,未知[] |未定义,未知[] |未定义> | ObjectSchemaOf<...> | ObjectSchemaOf<...>; }'。
我也试过
const userNameSchema = yup.object<UserNameModelSnapshot>({
name: yup.string().required().defined().min(3),
});
但在UserNameModelSnapshot
TS2344: 类型 'ModelSnapshotType' 不满足约束“ObjectShape”。 'ModelSnapshotType'。
我也试过
const UserNameModel = types.model({
name: types.string,
});
type UserNameModelSnapshot = Instance<typeof UserNameModel>;
const userNameSchema = yup.object<UserNameModelSnapshot>({
name: yup.string().required().defined().min(3),
});
但是在UserNameModelSnapshot
TS2344:键入'{名称:字符串; } & NonEmptyObject & IStateTreeNode
>' 不满足约束“ObjectShape”。类型 '{ name: string; 中缺少索引签名; } & NonEmptyObject & IStateTreeNode >'。
【问题讨论】:
-
那么除了我建议的以外,你有没有找到其他解决方案?
标签: typescript mobx yup mobx-state-tree