josdejong/ducktype

Are recursive types supported?

オープン

#40 opened on 2021/01/17

 (5 件のコメント) (0 件のリアクション) (0 人の担当者)JavaScript (10 件のフォーク)github user discovery
enhancementhelp wanted

Repository metrics

Stars
 (92 個のスター)
PR merge metrics
 (30d に merged 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.

コントリビューターガイド