我在打字稿中调用另一个函数时遇到以下问题
此表达式不可调用。类型'{getUserInfo(requestData:object):Promise; }'没有呼叫签名。在我的index.ts
index.ts
const fetchApiData = await getUserInfo(requestData)
service.ts
import { userInfoApi } from '../constants/api'
import request from '../utils/request'
export default {
async getUserInfo(requestData: object): Promise<object> {
return await request(userInfoApi, requestData, 'GET')
},
}
request.ts
const request = (operation: string, data: object, method: any): Promise<object> => {
return new Promise(function(resolve, reject) {
my.request({
url: operation,
data: data,
method: method,
success: function(res) {
resolve(res)
},
fail: function(err) {
reject(err)
},
})
})
}
export default (operation: string, data: object, method: any): Promise<any> => {
let timeHandle
const timeout = 65 * 1000
const promiseTimeout = new Promise(resolve => {
timeHandle = setTimeout(() => {
resolve({
success: false,
errorCode: 'NETWORK_TIMEOUT',
errorMessage: 'Network Timeout',
})
}, timeout)
})
return Promise.race([
request(operation, data, method).then(result => {
clearTimeout(timeHandle)
return result
}),
promiseTimeout,
])
}
任何想法如何解决?
该错误有效。
基于您的错误Type '{ getUserInfo(requestData: object): Promise; }' has no call signatures
,而不是应调用something(requestData)
,而应调用something.getUserInfo(requestData)
。
更改:
export default {
async getUserInfo(requestData: object): Promise<object> {
return await request(userInfoApi, requestData, 'GET')
},
}
到
export default async function getUserInfo(requestData: object): Promise<object> {
return await request(userInfoApi, requestData, 'GET')
};
更改为
service.ts
export default async getUserInfo(requestData: object): Promise<object> {
return await request(userInfoApi, requestData, 'GET')
};
index.ts
import getUserInfo from 'service.ts'