使用TypeScript async / await与Node core api(fs,process等)的最佳方法是什么?
将核心模块转换为使用带有bluebird.promisifyAll()
的Promises将是完美的,除非您丢失类型信息,我希望能够保留它。您最终得到xxxAsync方法名称,TypeScript输入系统不知道它们的存在。
是否有一个项目可以将核心API转换为返回promises并使用TypeScript定义文件.d.ts
来支持它?
答案 0 :(得分:2)
在NPM上查看async-file包装器。它是fs的直接替代品,它包含Promise中的所有异步函数,并提供强类型。它还提供了一些便利功能,以简化访问文本文件和删除文件和目录。
答案 1 :(得分:0)
我认为这是更好的方式:
// Example: checking file existence
let res = await new Promise((resolve, reject) => {
fs.access(filePath, fs.constants.R_OK, async (err) => {
if (err) {
console.error('File does not exists or cannot be read');
return resolve(false);
}
return resolve(true);
});
});
console.log(res); // Correctly resolved (true/false)