Correctly infer literal from enum
Opened this issue · 1 comments
rubengmurray commented
It would be great to see support of enum
values through to extracted types.
I've just tested out the following code with the @latest
tag of @hapi/joi
& joi-extract-type
and it appears they aren't carried through.
Are there any plans to support? Has it been looked at before?
import * as joi from '@hapi/joi';
import 'joi-extract-type';
enum Options {
OPTION_ONE = 1,
OPTION_TWO = 2,
OPTION_THREE = 3
};
const optionArgs = joi.object({
option: joi.number().valid(...Object.values(Options).filter(o => typeof o === 'number'))
})
type OptionSchema = joi.extractType<typeof optionArgs>
// passes (expect to pass)
const myObjOne: OptionSchema = {
option: 1
};
// passes (expect to fail)
const myObjTwo: OptionSchema = {
option: 9
};
// fails (expect to fail)
const myObjThree: OptionSchema = {
option: 'help'
};
Versions
"dependencies": {
"@hapi/joi": "17.1.1",
"joi-extract-type": "15.0.8"
}
rubengmurray commented
Just occurred to me this is not necessarily enum
specific and is more of a support of the valid()
method...
Looks like it's mentioned here a while back 👀