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

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

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

我试过什么

验证.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})

编译时,我得到了错误

找不到名称“可迭代”。

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

更新

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

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

原文由 Sathya Narayanan GVK 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 903
2 个回答

请更改您的导入

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

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

npm install --save-dev @types/joi

原文由 Zakthedev 发布,翻译遵循 CC BY-SA 4.0 许可协议

Joi 的类型定义存在: @types /joi 或 @types/hapi__joi (对于 joi 版本 17)。

将它们添加到您的 package.json 中,您应该能够将 Joi 与 Typescript 一起使用。一般来说,您不应该下载单独的库来使包在 Typescript 中工作,一些定义应该可以

原文由 Phillip 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题