mobx-state-tree将可选类型转换为非可选

时间:2019-01-17 11:46:32

标签: mobx-state-tree

如何将可选类型转换为非可选

types.optional(types.string)types.optional 据我所知,这可行:

const t = optional(types.string); 
delete t.defaultValue

但这似乎很不对劲。有更好的方法吗?

1 个答案:

答案 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
            }
        }
    }))