1. ホーム
  2. javascript

[解決済み] JoiをTypescriptで実装する

2022-02-12 18:06:54

質問

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)

Joiがjavascriptのライブラリであることは知っていますが、Typescriptでそれを利用することは可能でしょうか。 https://github.com/joiful-ts/joiful .

を使った簡単な方法があれば教えてください。 タイプスクリプトで直接ジョイ . あるいは、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})

コンパイル中にエラーが発生しました。

名前 'Iterable' が見つかりません。

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

アップデイト
回答にあるように@types/joiをインストールしましたが、まだ同じエラーです。

私は基本的に、文字列、ブーリアン、数値、配列、オブジェクトのキーの検証をJavascriptのJoiで簡単にできるものを探しています

どのように解決するのですか?

インポートを変更してください。

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

そして、タイプをインストールしたことを確認するために

npm install --save-dev @types/joi