2017-06-25 46 views
0

我剛剛開始使用TypeScript,並且遇到了我正在使用的庫的類型定義錯誤的情況。在我的情況下,圖書館是Massive,jshere are the type definitions在TypeScript中,定義可返回Promise <T>或Promise <T[]>的函數的最佳方法是什麼?

問題是某些函數應返回Promise<T[]>Promise<T>,但類型表示它總是Promise<T[]>

interface Table<T> { 
    // other functions omitted for simplicity 
    save(data: object): Promise<T[]>; 
    insert(data: object): Promise<T[]>; 
    update(dataOrCriteria: object, changesMap?: object): Promise<T[]>; 
    } 

如何解決上述功能,這樣他們就返回要麼Promise<T[]>Promise<T>

+0

你是怎麼用'Table'的?你在輸入嗎? –

回答

2

您可以定義多種類型。

interface Table<T> { 
    // other functions omitted for simplicity 
    save(data: object): Promise<T | T[]>; 
    insert(data: object): Promise<T | T[]>; 
    update(dataOrCriteria: object, changesMap?: object): Promise<T | T[]>; 
    } 

或使用該庫時,只需將T項目的數組。

+0

謝謝,但智能感知不起作用。這是我怎麼稱呼功能呢? 'user = await(db.user.save(user)as Promise )' –

+0

不,您應該在創建該類的新實例時使用正確的類型初始化T. – toskv

+0

對不起。我不明白。在我的情況下,T是IUser。 –

相關問題