在 Typescript 中实现 Joi

Sat*_*GVK 8 javascript typescript joi

javascript 中的简单 joi 验证片段。当验证失败时,它只会返回一个错误对象。

验证.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)
Run Code Online (Sandbox Code Playgroud)

现在我正在学习打字稿并喜欢在 TS 中执行确切的功能。我知道 Joi 是一个 javascript 库,但我们可以在打字稿中使用它。探索时我遇到了一些替代方案,如https://github.com/ joiful-ts/joiful

我很想知道是否有任何直接在 typescript 中使用Joi 的直接方法。或者做一点点改变,让 Joi 像在 Javascript 中一样工作。

我的尝试

验证文件

import * as Joi from "joi";

export const validateObject = (input: object) => {
const schema = {
    home: Joi.string().required(),
  };
  return Joi.validate(input, schema);
};
validateObject({key:5})
Run Code Online (Sandbox Code Playgroud)

编译时,我收到错误

找不到名称“可迭代”。

703 map(iterable: Iterable<[string | number | boolean | symbol, symbol]> | { [key: string]: symbol }): this;

更新
我已经按照答案中的建议安装了@types/joi,但仍然出现相同的错误

我基本上是在寻找验证字符串、布尔值、数字、数组和对象键,因为它可以在 Javascript 中使用 Joi 轻松完成

Zak*_*dev 5

请更改const Joi =require("joi");import Joi from "joi";并确保您已通过使用安装类型npm install @types/joi --save-dev