Open douglasg14b opened 1 month ago
Also interestingly:
// This will generate
export type InArray<TVal> =
| [TVal]
| [unknown, TVal]
| [TVal, unknown];
// This will fail with: TypeError: Cannot read properties of undefined (reading 'any')
export type InArray<TVal> =
| [TVal]
| [unknown, TVal]
| [TVal, unknown]
| [TVal, unknown, unknown]
| [unknown, TVal, unknown]
| [unknown, unknown, TVal];
Also interestingly:
// This will generate export type InArray<TVal> = | [TVal] | [unknown, TVal] | [TVal, unknown]; // This will fail with: TypeError: Cannot read properties of undefined (reading 'any') export type InArray<TVal> = | [TVal] | [unknown, TVal] | [TVal, unknown] | [TVal, unknown, unknown] | [unknown, TVal, unknown] | [unknown, unknown, TVal];
I'm testing on it but error is not occured. Which value occurs the error?
About the rest elements type in the first or middle position in the tuple, I haven't known the spec.
By the way, I may need more investigation times because it is actually not possible in the JSON schema specification.
If neccessary, I may prohibit the type due to the JSON schema reason.
Thanks for the reply @samchon !! I really appreciate it ^_^
Here's the stacktrace/error for the above:
> pnpm typia generate --input ./src/validators/templates --output ./src/validators/generated --project tsconfig.json
----------------------------------------
Typia Generate Wizard
----------------------------------------
TypeError: Cannot read properties of undefined (reading 'any')
at Metadata.covers (/home/douglas/programming/[redacted]/node_modules/.pnpm/typia@6.10.4_typescript@5.6.2/node_modules/typia/lib/schemas/metadata/Metadata.js:371:20)
at /home/douglas/programming/[redacted]/node_modules/.pnpm/typia@6.10.4_typescript@5.6.2/node_modules/typia/lib/schemas/metadata/Metadata.js:415:75
at Array.every (<anonymous>)
at /home/douglas/programming/[redacted]/node_modules/.pnpm/typia@6.10.4_typescript@5.6.2/node_modules/typia/lib/schemas/metadata/Metadata.js:415:34
at Array.some (<anonymous>)
at _loop_4 (/home/douglas/programming/[redacted]/node_modules/.pnpm/typia@6.10.4_typescript@5.6.2/node_modules/typia/lib/schemas/metadata/Metadata.js:411:30)
at Metadata.covers (/home/douglas/programming/[redacted]/node_modules/.pnpm/typia@6.10.4_typescript@5.6.2/node_modules/typia/lib/schemas/metadata/Metadata.js:423:35)
at /home/douglas/programming/[redacted]/node_modules/.pnpm/typia@6.10.4_typescript@5.6.2/node_modules/typia/lib/factories/internal/metadata/iterate_metadata_sort.js:146:48
at Array.sort (<anonymous>)
at /home/douglas/programming/[redacted]/node_modules/.pnpm/typia@6.10.4_typescript@5.6.2/node_modules/typia/lib/factories/internal/metadata/iterate_metadata_sort.js:141:29
I have read through the docs before coming here, if I missed something important my apologies
Question
I need to validate a tuple type:
[Status]
where:Status
anywhere within the array regardless of it's index.Status
Essentially
Must contain a Status, anywhere
is the validation requirement. Which sounds deceptively simple, but is turning out to be rather difficult to actually get generated.I'm struggling to do this with
typia
:Status[]
is an arrya of onlyStatus
[...unknown[], Status]
is an array withStatus
as the last element[...unknown[], Status, ...unknown[]]
is an invalid type[...unknown[], Status] | [Status, ...unknown[]
['stuff', 'SUCCESS']
fails validationtuplePredicators
expect the array to be of length1
or2
only. And only expects aStatus
at[0]
?string[] | [Status]
is a valid type but results innonsensible intersection
Array<Status> & Array<unknown>
results innonsensible intersection
(This wouldn't make sense for typing anyways)How do I do this?
I do recognize the asinine-ness of this value, but... legacy system modeling