Typescriptは、オブジェクトメソッドが存在しないと考えているので自分のコードを翻訳していません。typescript transpileでは実行時にオブジェクトのプロパティが存在しないのはなぜですか?
約束が解決されると、実行時にメソッドが存在します。プロミスが返されたために、タイソリスクリプトがトランジリエートしようとしているときには存在しません。
public generateOauthClient(){
return new Promise((resolve, reject) => {
// Load client secrets from a local file.
fs.readFile(appConfig.youtube.keyFilename, 'utf8', function processClientSecrets(err, content) {
if(err) {
return reject('Error loading client secret file: ' + err);
}
const credentials = JSON.parse(content);
const clientSecret = credentials.installed.client_secret;
const clientId = credentials.installed.client_id;
const redirectUrl = credentials.installed.redirect_uris[0];
const auth = new googleAuth();
const oauth2Client = new auth.OAuth2(clientId, clientSecret, redirectUrl);
resolve(oauth2Client);
})
});
}
そして、私は別の場所で自分のコードに
const oauth2Client = await this.generateOauthClient();
oauth2Client.setCredentials({
access_token: JSON.parse(tokens).access_token,
refresh_token: JSON.parse(tokens).refresh_token
});
oauth2Client.refreshAccessToken((err, tokens) => {
if(err) return reject(err)
this.storeToken(tokens).then(()=>{
resolve('Successfully updated tokens')
}).catch((err2)=> {
reject(err2)
})
});
は、その後、私はtypescriptですエラーを取得することを呼び出してみてください:Property 'setCredentials' does not exist on type '{}'
My機能
generateOauthClient
関数を約束を返すのではなくコールバックを返すように変更すると、typescriptは正常に機能します。
私はこれを回避するために、コールバックの代わりに約束を使用する方法を教えてください。
私は '.then()'約束の構文を使用する場合、動作するようには思えません'async/await'の代わりに。私は不動産に関する同じエラーを既存のものとしない – Stretch0