ウェブサイト検索

typescript - DenoでJSONファイルをオブジェクトモデルに変換する方法はありますか?


問題: ファイル(student.json)を読み取って Student[] 型の変数に格納しようとすると、「Type 'unknown' is not assignable to type 'Student[]'.」と表示されます。これは TypeScript ファイルです。

import { Student } from "../Models/studentModel.ts";
import { readJson, writeJson } from "https://deno.land/std/fs/mod.ts";

const f = await readJson("../public/student.json");
const students:Student[] = f;

export const get_all_students = (ctx: Context) => {
  return ctx.json(students,200);
};

期待: ファイルからJSONをサーバーに返そうとしています。試した解決策: Json.stringify() を試しました。それでも同じエラーが出ます。

回答 #1

readJson メソッドは不明な型の Promise を返します。不明な型は any 型と不明な型自体にのみ代入可能です。

もしコンパイラーに、型が unknown の値が特定の型であると信頼させたい場合は、次のように型アサーションを使用できます:

 const f = await readJson("./public/student.json");
 const students:Student[] = f as Student[];

回答 #2

上記のエラーを解決するには、型アサーションを使用してください:

const students = f as Student[];

私はDenoに詳しくありませんが、ファイルをレスポンスストリームに書き込むか、適切なヘッダーで提供することはできると思います。それがあなたのシナリオに合っているかはわかりません。