打字稿-为什么AxiosPromise没有属性“ .finally”?

时间:2018-07-23 20:01:48

标签: javascript typescript axios

我正在将JS文件转换为TS。这是有问题的原始代码。

let refreshToken = null;

if (refreshToken == null) {
    refreshToken = // get the axios instance...
} 

refreshToken
.then(() => { // something })
.catch(() => { // something })
.finally(() => { // something });

所以我将其转换为:

let refreshToken : AxiosPromise | null = null;

if (refreshToken == null) {
    refreshToken = // get the axios instance...
} 

refreshToken
.then(() => { // something })
.catch(() => { // something })
.finally(() => { // something });

但是finally给我一个错误:

  

Promise类型不存在“最终”属性。

那是为什么?

解决这个问题的方法只是写(refreshToken as any),但这似乎是一个解决方案。 TypeScript是否应该能够推断refreshTokenAxiosPromise

2 个答案:

答案 0 :(得分:1)

list3 = [list(pair) for pair in zip(list1, list2)] 

并将其添加到顶部

$ npm install axios promise.prototype.finally --save

答案 1 :(得分:1)

或者,您可以在链的最后一部分附加一个.then。带有原生Promise的示例(此行为应该相同)true / false如下:

function fakeGet(passed) {
  return new Promise((resolve, reject) => setTimeout(passed ? resolve : reject, 1000));
}

function onComplete(passed) {
  console.log(passed ? 'Success' : 'Failed')
}

fakeGet(true)
.then(() => true)
.catch(() => false)
.then(onComplete);

fakeGet(false)
.then(() => true)
.catch(() => false)
.then(onComplete);