繁体   English   中英

在 Typescript 中实现 Joi

[英]Implement Joi in Typescript

javascript 中的简单 joi 验证片段。当验证失败时,它将简单地返回错误 object。

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

Now I am learning typescript and like to do the exact functionality in TS.I am aware that Joi is a javascript library but can we make use of it in Typescript.When exploring I came across some alternatives like 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 }): this;

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

我基本上是在寻找验证字符串,boolean,数字,数组和 object 键,因为它可以通过 Javascript 中的 Joi 轻松完成

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

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

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

我怀疑import * as Joi from "joi"会给你带来很多快乐。 您正在导入所有导出的成员。

您是否需要单独的出口? 使用import { IndividualExport } from "joi"

是否有您想要的默认导出? 使用import Joi from "joi"

您在第二个示例中调用Joi而不是第一个示例是否还有原因?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM