mobx-state-tree преобразует необязательный тип в необязательный - PullRequest
0 голосов
/ 17 января 2019

Как преобразовать необязательный тип в необязательный

от types.optional(types.string) до types.optional Насколько я знаю, это работает:

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

Но это кажется очень неправильным. Есть ли лучший способ?

1 Ответ

0 голосов
/ 04 марта 2019

Вы можете использовать метод .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
            }
        }
    }))
...