Skip to content

Design enhancement: a catch-all class decorator for modifications to modelSchema (which would subsume e.g. serializeAll) #150

Open
@peey

Description

@peey

serializeAll is not the only case which is insufficiently supported by class field decorators.

factory is another case. Without decorator support, this is what the user has to write:

getDefaultModelSchema(Todo).factory = context => (...)

but with decorator support, this is what user may instead write

@factory(context => (...))
class Todo {
  ...
}

But this got me thinking, shouldn't there be just one class-decorator to support both of these?

@serializr(() => {factory: ..., {props: {"*": true}}) 

The returned value could just be deep-merged into the model-schema as built-up by field decorators.

It does not save many characters of typing, but it's a much more uniform interface for the library user. Of the two interfaces offered by the library (decorator-based and non-decorator), it'll be ideal if the user using one of the interfaces doesn't have to deal with the other.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions