0

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

types.optional(types.string)types.optional 据我所知这是有效的:

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

但这似乎是非常错误的。有没有更好的办法?

4

1 回答 1

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
            }
        }
    }))
于 2019-03-04T16:53:22.833 回答