Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Argument of type 'unknown' is not assignable to parameter of type 'string'. While trying to implement json parse in typescript

I am implementing this code from node js to typescript and I am having the following error

const StringPath:string = "../PathtoJson.json";

export class ClassName
{   
    name:string;
    constructor(name:string) {
        this.name = name;
    }
    loadn(filename:string) 
    {
        return new Promise((resolve, reject) => {
            let fs = require('fs');
                fs.readFile(filename, function (err:Error, data:any) 
                {
                    if (err) 
                    {
                        console.log(err);
                        reject();
                        throw err;   
                    }
                    let gg = JSON.parse(data);
                    resolve(data);
                });
            });
    }
}
let jsh = new ClassName("A string");
let  test = jsh.loadn(StringPath).then((result) => {
    test = JSON.parse(result); // here happens the error
    //return JSON.parse(result); // the same error happens here to
});

Error: (parameter) result: unknown

Argument of type 'unknown' is not assignable to parameter of type 'string'

like image 702
Sken Avatar asked Oct 27 '25 10:10

Sken


2 Answers

Function loadn is returning Promise<unknown>. It should return Promise<string> so you can type it as such.

  loadn(filename: string): Promise<string> { // Here
    return new Promise((resolve, reject) => {
      const fs = require("fs");
      fs.readFile(filename, function(err: Error, data: any) {
        if (err) {
          console.log(err);
          reject();
          throw err;
        }
        let gg = JSON.parse(data);
        resolve(data);
      });
    });
  }

Or type a Promise you're creating:

return new Promise<string>((resolve, reject) => {
like image 91
Roberto Zvjerković Avatar answered Oct 29 '25 23:10

Roberto Zvjerković


For me it was only a IDE warning, there was actually no issue when I executed the code.

like image 36
HelpMatters Avatar answered Oct 29 '25 23:10

HelpMatters