В typescript promisify преобразует fs.stat в ошибку ts 2349

#node.js #typescript

#node.js #typescript

Вопрос:

Я новичок в typescript, я столкнулся с некоторыми предупреждениями typescript при использовании promisify для преобразования fs.sta.

  const stat: (
  pathname: string
) => Promise<fs.Stats | NodeJS.ErrnoException> = util.promisify(fs.stat);
  
 Cannot invoke an expression whose type lacks a call signature. Type 'Stats' has no compatible call signatures.ts(2349)
  

Ответ №1:

Как выглядит ваш tsconfig.json и package.json ?

Для меня работает следующее:

 import fs from "fs";
import util from "util";

const stat: (pathname: string) => Promise<fs.Stats> = util.promisify(fs.stat);
  

tsconfig.json :

 {
  "compilerOptions": {
    "target": "es5",
    "module": "commonjs",
    "strict": true,
    "esModuleInterop": true
  }
}
  

package.json :

 {
  "dependencies": {
    "@types/node": "^11.11.8",
    "typescript": "^3.3.4000"
  }
}
  

Также не следует указывать тип ошибки, stat вызываемой в типе обещания. Поэтому вместо Promise<fs.Stats | NodeJS.ErrnoException> вам следует просто сделать Promise<fs.Stats>