2017-07-15 69 views
1

我有我的主要文件中的以下代碼的命令行應用程序:從Typescript async await方法返回一個類型化的let值?

const init = async(): Promise<types.IContextObject> => { 
    let context: types.IContextObject; 
    try { 
     context = await createContext(dataObj); 
    } catch (e) { 
     dataObj.errors.insert({ message: e.message }); 
     process.exit(1); 
    } 

    context.info.insert({ 
    message: `Using Rules: `.bold + `${Object.keys(context.rules).join(', ')}` 
    }); 
    return context; 

};

在此我得到以下編譯器錯誤:

Variable 'context' is used before being assigned. 
let context: types.IContextObject 

如果我提出try塊內的最後兩行,我得到:

Function lacks ending return statement and return type does not include 'undefined'. 

回答

3

如果你把它的嘗試之外,還有不保證價值存在。如果你把它放在try中,你必須提供第二個返回方法,以便在try失敗時返回一些東西。

因此,無論您是提供context的默認值,還是在底部提供默認返回語句。這些工作都很好。

1

您的變量context未在try塊之外定義。或者移動你的insert並返回到try塊內部,並在你的catch中返回null,或者當你聲明它時將context設置爲null;但是,如果您在捕獲語句後沒有進行適當的空檢查,則嘗試訪問info時可能會引發錯誤。

相關問題