2017-06-25 3 views
0

私はTypeScriptを使い始めています。使用しているライブラリの型定義が間違っている状況がありました。私の場合、図書館はMassive,jshere are the type definitionsです。TypeScriptでは、Promise <T>またはPromise <T[]>のいずれかを返す関数を定義する最良の方法は何ですか?

一部の関数は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[]>; 
    } 

+0

どのように 'テーブル 'を使用していますか?あなたはそれをインポートしていますか? –

答えて

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です。 –

関連する問題