2017-12-10 13 views
0

私は、次の2つのパッケージがインストールされている:私はインスタンス化する前にプライベートタイプにラベルを付けることができるように、クラスの内部でOra型定義を使用しようとしている活字体 - アクセス「隠された」タイプ

"@types/ora": "^1.3.1", 
"ora": "^1.3.0", 

それ。

これは正常に動作します:

import * as ora from "ora"; 
const spinner = ora(); // <-- 'spinner' is of Ora type, Intellisense works 

しかし、これは...

class Test { 
    private spinner: Ora; // <-- error. Ora not defined. `ora` doesn't work. 
} 

は、どのように私は '暗黙の' 型にアクセスしませんか?私は自分の型定義で補足するか、メソッドによって暗黙的に返される '隠れた'型にアクセスする簡単な方法がありますか?

答えて

0

パッケージには、あなたがtypeofと型の変数を使用し、あるいは単に型推論を使用して良いと考えタイプにメンバーを入力しますora()の結果を割り当てることができ、種類をエクスポートしませんので:

import * as ora from "ora"; 
const spinner = ora(); 
class Test { 
    private spinner: typeof spinner; 
    private spinner2 = ora(); 
} 

それとも、ora()を呼び出すの副作用なしに、それを入力したい場合は、ヘルパー関数を使用できます。

import * as ora from "ora"; 

function hiddenTypeHelper<T>(fn : (...params:any[])=> T): T { 
    return <any> undefined; 
} 

let oraValue = hiddenTypeHelper(ora); 
type oraType = typeof oraValue; 

class Test { 
    private spinner : oraType; 
}