typescript - Onko olemassa tapa muuntaa JSON-tiedosto objektimalliksi Denossa?


Ongelma: Kun yritän lukea tiedoston (student.json) ja tallentaa sen Student[]-tyyppiseen muuttujaan, se sanoo "Type 'unknown' is not assignable to type 'Student[]'." Tämä on TypeScript-tiedosto.

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);
};

Odotus: Yritän palauttaa tiedostosta JSONin palvelimelle. Kokeillut ratkaisut: Olen kokeillut Json.stringify(). Se antaa silti saman virheen.

Vastaus #1

readJson-metodi palauttaa tuntemattoman tyypin lupauksen. Tuntematon tyyppi voidaan määrittää vain any-tyypille ja tuntematon tyyppi itselleen.

Jos haluat pakottaa kääntäjän luottamaan siihen, että tuntemattoman tyypin arvo on tiettyä tyyppiä, voit käyttää tyyppivarmistusta näin:

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

Vastaus #2

Yllä olevan virheen ratkaisemiseksi käytä vain tyyppivarmistusta:

const students = f as Student[];

En ole perehtynyt denoon, mutta olen melko varma, että voisit vain kirjoittaa tiedoston vastausvirtaukseen tai tarjoilla sen sopivien otsikoiden kanssa. En ole varma, onko se järkevää sinun tilanteessasi.