javascript - Implementera Joi i Typescript
Enkelt Joi-valideringssnutt i JavaScript. Den kommer helt enkelt returnera ett felobjekt när valideringen misslyckas.
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)
Nu lär jag mig TypeScript och vill göra exakt samma funktionalitet i TS. Jag är medveten om att Joi är ett JavaScript-bibliotek, men kan vi använda det i TypeScript. När jag utforskade stötte jag på några alternativ som https://github.com/joiful-ts/joiful.
Jag är nyfiken på att veta om det finns något enkelt tillvägagångssätt för att använda Joi direkt i TypeScript. Eller några små förändringar för att få Joi att fungera precis som i JavaScript.
VAD JAG FÖRSÖKTE
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})
När jag kompilerade fick jag felet
Kan inte hitta namnet 'Iterable'.
703 map(iterable: Iterable<[string | number | boolean | symbol, symbol]> | { [key: string]: symbol }): detta;
UPPDATERING
Jag har installerat @types/joi som föreslagits i svaret men fortfarande samma fel
Jag letar i princip efter att validera sträng, boolean, nummer, array och objektnycklar eftersom det kan göras enkelt med Joi i Javascript
Svar #1
Vänligen ändra din import
-const Joi =require("joi");
+import Joi from "joi";
Och se till att du har installerat typerna genom att använda
npm install --save-dev @types/joi
Svar #2
Försök att använda den här koden istället.
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})
Jag hoppas att du kommer att lyckas få det att fungera.
