问题
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
回答1:
Type definitions for Joi exists: @types/joi.
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
回答2:
I doubt that import * as Joi from "joi"
is going to give you much joy. You are importing all exported members with that.
Is there an individual export you are wanting? Use import { IndividualExport } from "joi"
Is there a default export you are wanting? Use import Joi from "joi"
Also is there a reason you are calling Joi
in the second example but not the first?
来源:https://stackoverflow.com/questions/58410173/implement-joi-in-typescript