如何将可选类型转换为非可选
从types.optional(types.string)
到types.optional
据我所知,这可行:
const t = optional(types.string);
delete t.defaultValue
但这似乎很不对劲。有更好的方法吗?
答案 0 :(得分:0)
您可以使用.named(name)
方法,该方法将克隆给定类型,为其提供新的name
,并为您提供了一种通过其他属性,视图,操作或也许“扩展”它的方法,覆盖原始类型中声明的那些。
示例:
const Square = types
.model("Square",
{
width: types.number
}
)
.views(self => ({
surface() {
return self.width * self.width
}
}))
// create a new type, based on Square
const Box = Square
.named("Box")
.views(self => {
// save the base implementation of surface
const superSurface = self.surface
return {
// super contrived override example!
surface() {
return superSurface() * 1
},
volume() {
return self.surface * self.width
}
}
}))