2017-10-25 9 views
0

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 '{}'

をoauthclientを解決する約束を返し

My機能

generateOauthClient関数を約束を返すのではなくコールバックを返すように変更すると、typescriptは正常に機能します。

私はこれを回避するために、コールバックの代わりに約束を使用する方法を教えてください。

+0

私は '.then()'約束の構文を使用する場合、動作するようには思えません'async/await'の代わりに。私は不動産に関する同じエラーを既存のものとしない – Stretch0

答えて

1

あなたのPromiseが返すものをTypescriptに伝える必要があります。これは、活字体はあなたが使用する構文(非同期/ .then待つか)のいずれかで結果に何をすべきかをチェックすることができます:

new Promise<auth.OAuth2>((resolve, reject) => { .. }) 
+0

これは私が逃したものです。ありがとうございました。しかし、私はこれを行うために必要な 'googleAuth'のインスタンスを返しています:' new Promise ((resolve、reject)=> {..}) 'は少し異なります。 – Stretch0

関連する問題