将TypeScript async/await与节点核心应用程序接口(文件系统、进程等)一起使用的最佳方式是什么?
将核心模块转换为使用bluebird.promisifyAll()的Promises将是完美的,除非这样会丢失类型信息,而我希望能够保留它。最终得到的是xxxAsync方法名,而TypeScript类型系统对它们的存在一无所知。
有没有一个项目可以将核心应用程序接口转换为返回promises,并拥有TypeScript定义文件.d.ts来支持它?
发布于 2016-08-26 12:43:52
查看NPM上的async-file包装器。它是fs的临时替代品,它将所有异步函数封装在一个Promise中,并提供强类型。它还提供了一些方便的函数,以简化访问文本文件和删除文件和目录的过程。
发布于 2017-09-11 23:14:43
我认为这是更好的方式:
// 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)https://stackoverflow.com/questions/39157825
复制相似问题