2017-06-25 54 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。 –

相关问题