josdejong/ducktype

Are recursive types supported?

Open

#40 aberto em 17 de jan. de 2021

Ver no GitHub
 (5 comments) (0 reactions) (0 assignees)JavaScript (10 forks)github user discovery
enhancementhelp wanted

Métricas do repositório

Stars
 (92 stars)
Métricas de merge de PR
 (Métricas PR pendentes)

Description

Is it possible to define a type e.g. "segment" that is either a string, a number, or an array of segments (recursive definition)? If not, please consider it a feature request.

Something like:

const segment = ducktype.indirect();
segment.that = ducktype(String, Number, [segment]);

or even:

const segment = ducktype.recursive(self => ducktype(String, Number, [self]));

Basically I need to validate that all "leaves" of a non-flat array are of a particular union type. I cannot flatten the array before validating because it is nested in a bigger data structure that I want to validate as a whole (as opposed to picking these arrays out of it for flattening and validation), and the nesting structure within the array is meaningful.

Guia do colaborador