josdejong/ducktype

Are recursive types supported?

Open

#40 创建于 2021年1月17日

在 GitHub 查看
 (5 评论) (0 反应) (0 负责人)JavaScript (10 fork)github user discovery
enhancementhelp wanted

仓库指标

Star
 (92 star)
PR 合并指标
 (PR 指标待抓取)

描述

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.

贡献者指南