Simple joi validation snippet in javascript.It will simply return an error object when validation fails.
validate.js
const Joi =require("joi");
function validateObject (input) {
const schema = {
key: Joi.string().required(),
};
return Joi.validate(input, schema);
};
let {error} = validateObject({key:5})
console.log(error)
Now I am learning typescript and like to do the exact functionality in TS.I am aware that Joi is a javascript library but can we make use of it in Typescript.When exploring I came across some alternatives like https://github.com/joiful-ts/joiful.
I am curious to know if there is any straightforward approach using Joi directly in typescript. Or little bit of changes to make the Joi work exactly like in Javascript.
WHAT I TRIED
validate.ts
import * as Joi from "joi";
export const validateObject = (input: object) => {
const schema = {
home: Joi.string().required(),
};
return Joi.validate(input, schema);
};
validateObject({key:5})
While compiling, I got the error
Cannot find name 'Iterable'.
703 map(iterable: Iterable<[string | number | boolean | symbol, symbol]> | { [key: string]: symbol }): this;
UPDATE
I have installed @types/joi as suggested in the answer but still the same error
I am basically looking for validating string,boolean,number,array and object keys as it can be done easily with Joi in Javascript
Please change your import
-const Joi =require("joi");
+import Joi from "joi";
And make sure you've installed the types by using
npm install --save-dev @types/joi
Try to use this code instead.
import * as Joi from "joi";
export const validateObject = (input: object) => {
const schema = Joi.object().keys({
home: Joi.string().required(),
});
return schema.validate(input);
};
validateObject({key:5})
I hope you will manage to make it work.
Type definitions for Joi exists: @types/joi or @types/hapi__joi (for joi version 17).
Add those to your package.json, and you should be able to use Joi with Typescript. Generally speaking you should not be downloading seperate libraries to make a package work in Typescript, some definitions should do
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With