在 Typescript 中实现 Joi
Implement Joi in Typescript
javascript.It 中的简单 joi 验证片段将在验证失败时简单地 return 一个错误对象。
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)
现在我正在学习打字稿,并且喜欢在 TS.I 中实现确切的功能,我知道 Joi 是一个 javascript 库,但我们可以在 Typescript.When 探索中利用它吗?遇到了一些替代方案,例如 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,但仍然出现同样的错误
我基本上是在寻找验证字符串、布尔值、数字、数组和对象键,因为它可以在 Javascript
中使用 Joi 轻松完成
我怀疑 import * as Joi from "joi"
会给你带来多少快乐。您正在使用它导入所有导出的成员。
是否有您想要的个人导出?使用 import { IndividualExport } from "joi"
是否有您想要的默认导出?使用 import Joi from "joi"
还有你在第二个例子中调用 Joi
而不是第一个例子的原因吗?
存在 Joi 的类型定义:@types/joi or @types/hapi__joi(对于 joi 版本 17)。
将这些添加到您的 package.json,您应该能够将 Joi 与 Typescript 一起使用。一般来说,您不应该下载单独的库来使包在 Typescript 中工作,一些定义应该可以
请更改您的导入
-const Joi =require("joi");
+import Joi from "joi";
并确保您已使用
安装了这些类型
npm install --save-dev @types/joi
尝试改用此代码。
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})
希望你能成功。
javascript.It 中的简单 joi 验证片段将在验证失败时简单地 return 一个错误对象。
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)
现在我正在学习打字稿,并且喜欢在 TS.I 中实现确切的功能,我知道 Joi 是一个 javascript 库,但我们可以在 Typescript.When 探索中利用它吗?遇到了一些替代方案,例如 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,但仍然出现同样的错误
我基本上是在寻找验证字符串、布尔值、数字、数组和对象键,因为它可以在 Javascript
中使用 Joi 轻松完成我怀疑 import * as Joi from "joi"
会给你带来多少快乐。您正在使用它导入所有导出的成员。
是否有您想要的个人导出?使用 import { IndividualExport } from "joi"
是否有您想要的默认导出?使用 import Joi from "joi"
还有你在第二个例子中调用 Joi
而不是第一个例子的原因吗?
存在 Joi 的类型定义:@types/joi or @types/hapi__joi(对于 joi 版本 17)。
将这些添加到您的 package.json,您应该能够将 Joi 与 Typescript 一起使用。一般来说,您不应该下载单独的库来使包在 Typescript 中工作,一些定义应该可以
请更改您的导入
-const Joi =require("joi");
+import Joi from "joi";
并确保您已使用
安装了这些类型npm install --save-dev @types/joi
尝试改用此代码。
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})
希望你能成功。