我想将我的NodeJS配置存储在全局范围内。
我试图遵循此=> 在node.js和其他Stackoverflow解决方案中扩展TypeScript Global对象,
我制作了一个名为global.d.ts的文件,其中包含以下代码
declare global {
namespace NodeJS {
interface Global {
config: MyConfigType
}
}
}
Run Code Online (Sandbox Code Playgroud)
全局作用域的扩展只能直接嵌套在外部模块或环境模块声明中。ts(2669)
但是这样做很好=>
declare module NodeJS {
interface Global {
config: MyConfigType
}
}
Run Code Online (Sandbox Code Playgroud)
问题是,我需要导入文件MyConfigType以键入配置,但是第二个选项不允许这样做。
打字稿构建失败,因为它似乎不喜欢Promise.allSetttled即使我已经设置了 ts config comilerOptions"lib": [ "ES2020.Promise" ],
似乎对 的响应promise.allSettled不包括result或reason。
运行 typescript build 时出现以下错误:
Property 'reason' does not exist on type 'PromiseSettledResult<IMyPromiseResult>'.
Run Code Online (Sandbox Code Playgroud)
和
Property 'value' does not exist on type 'PromiseRejectedResult'.
Run Code Online (Sandbox Code Playgroud)
我的代码块看起来像这样,正如您所看到的,我正在尝试访问reason并result从中获取已解决的承诺。
const myPromise = async () : Promise<IMyPromiseResult> {
return new Promise((resolve) => {
resolve("hello world")
})
}
const data = await Promise.allSettled([
myPromise()
]);
const response = data.find(res => res.status === 'fulfilled')?.result;
if(!response) {
const error …Run Code Online (Sandbox Code Playgroud) 我想在打字稿代码中获取 Promise allSettled 结果的值。在 JavaScript 中这工作得很好。
Promise.allSettled([
Promise.resolve(33),
new Promise(resolve => setTimeout(() => resolve(1000), 0)),
25000,
Promise.reject(new Error('failed!'))
])
.then(values => {
let allValues = values.filter(c=>c.status === 'fulfilled').map(v=>v.value);
console.log(allValues);
});Run Code Online (Sandbox Code Playgroud)
但在打字稿中我找不到正确的语法。该项目只有状态,没有价值属性。我使用的是最新版本的 typescript 3.9.7