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.

貢獻者指南