0

我收到以下錯誤,當我使用AWS-SDK在angular2(打字稿)打字稿多返回類型的方法不佔

import * as AWS from 'aws-sdk'; 
    AWS.config.credentials.get 
     [ts] 
     Property 'get' does not exist on type 'Credentials | CredentialsOptions'. 
      Property 'get' does not exist on type 'CredentialsOptions'. 

得到CredentialsOptions不存在,但它確實憑據存在。由於這個原因,Typescript不斷拋棄我。有什麼建議麼?這是打字稿中的錯誤嗎?

我使用「打字稿」:「〜2.3.3」

+0

https://github.com/aws/aws-sdk-js#pre-requisites – JGFMK

+2

在TS的錯誤嗎?不,這是正確的行爲;該方法不在兩個可能的返回值上,所以你(和編譯器)不能假設它會在那裏。你可以自己縮小它,例如'(AWS.config.credentials as Credentials).get',但是如果這不是你實際得到的代碼在運行時會失敗。 – jonrsharpe

+0

謝謝@jonrsharpe。這是有道理的,儘管typecript隨機選擇一種返回類型有點混亂。 – Prabhat

回答

0

要基本上把jonrsharpe的評論成問答形式,TS在這裏做正確的事。如果物業的類型是Credentials | CredentialOptions,那麼它可能是任何一種類型,因此沒有get,因此撥打get並不安全。

更多細節在docs union類型:https://www.typescriptlang.org/docs/handbook/advanced-types.html

相關問題