0
打字稿V2.0.2 運行埃爾卡皮坦10.11.6我該如何聲明一個可選地接受回調的函數,並且只有在沒有回調的情況下才返回一個Promise?在Mac上
我有一個執行異步操作, 和單一的功能:
- 要麼需要一個回調,並沒有返回,調用回調 後,
- 或不接受回調,並返回一個承諾,稍後解決。
看來,我已經有類似的代碼工作, (見https://github.com/psnider/mongodb-adaptor/blob/master/src/ts/MongoDBAdaptor.ts) 但現在,這是失敗的, ,我想不通爲什麼!
// these declarations look correct to me, the caller uses one or the other
declare abstract class SlimDocumentDatabase<T> {
create(obj: T): Promise<T>
create(obj: T, done: (error: Error, result?: T) => void): void
}
class SlimAdaptor<DocumentType> implements SlimDocumentDatabase<DocumentType> {
create(obj: DocumentType, done?: (error: Error, result?: DocumentType) => void) : void | Promise<DocumentType> {
if (done) {
done(undefined, obj)
return
} else {
return Promise.resolve<DocumentType>(obj)
}
}
}
我能得到這個從創造的實現(除去返回類型規格)進行編譯,通過與任何替換它們。但是這似乎是錯誤的!