تايب سكريبت - هل هناك طريقة لتحويل ملف JSON إلى نموذج كائن في Deno؟
المشكلة: عندما أحاول قراءة ملف (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 تُرجع وعد من نوع unknown. نوع unknown يمكن تعيينه فقط إلى النوع any ونوع unknown نفسه.
إذا كنت تريد إجبار المُجمّع على الوثوق بك بأن قيمة من نوع غير معروف هي من نوع معين، يمكنك استخدام تأكيد النوع بهذا الشكل:
const f = await readJson("./public/student.json");
const students:Student[] = f as Student[];
الإجابة رقم 2
لحل الخطأ أعلاه، استخدم ببساطة تأكيد النوع:
const students = f as Student[];
لست مألوفًا مع دينو، لكني متأكد إلى حد كبير من أنك يمكنك ببساطة كتابة الملف إلى تدفق الاستجابة أو تقديمه مع الرؤوس المناسبة. لست متأكدًا مما إذا كان هذا منطقيًا في حالتك.
