javascript - 在 Typescript 中实现 Joi

标签 javascript typescript joi

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

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)

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

我很想知道是否有任何直接在 typescript 中使用Joi的简单方法。或者进行一些小小的更改,使 Joi 的工作方式与 Javascript 中的工作方式完全相同。

我尝试过的

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})

编译时出现错误

Cannot find name 'Iterable'.

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

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

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

最佳答案

请更改您的导入

-const Joi =require("joi");
+import Joi from "joi";

并确保您已使用安装了类型

npm install --save-dev @types/joi

关于javascript - 在 Typescript 中实现 Joi,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58410173/

相关文章:

javascript - 访问 JavaScript 根级对象 THIS 关键字值

javascript - 在 NestJS 中,有没有办法将数据从 Guards 传递到 Controller ?

typescript - 数组解构赋值中的 noUncheckedIndexedAccess 类型断言

node.js - 如何在@hapi/joi中设置自定义错误消息?

javascript - 使用 Joi、nodejs 验证 header 参数?

javascript - D3 替换数据并重新启动模拟后,并非所有节点都更新

javascript - 如果值未定义,如何不在对象中包含字段

typescript - Babel 不会编译所有文件

angular - 使用 angular2 在网络浏览器上显示 shapefile map

javascript - Hapi v17 - 文件响应的 Joi 架构