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.

Relaterade artiklar