joi-extract-type
joi-extract-type copied to clipboard
Correctly infer literal from enum
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"
}
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 👀
https://github.com/TCMiranda/joi-extract-type/issues/5#issue-372240680