2017-06-20 16 views
1

クラスに実装しないで特定の関数があることを宣言できますか?Typescript:実装しないで関数を宣言する

私はこのクラスを作成してから、いくつかの機能を追加するjsフレームワークに渡すので、これが必要です。リダイレクトやキャストなど、それらを再実装することなくこれらの関数を呼び出すこともできます。

例:

//example class 
class AppComponent { 
    constructor() {} 
} 

//create class 
var comp: AppComponent = new AppComponent(); 

//hand over to framework 
fw.define("Component", comp); 

//now I want to be able to call the added functions such as: 
comp.setModel(/*some model*/); 
+0

私はあなたがこれらのメソッドを持つ 'interface'とfw.define''の呼び出しはちょうど再びあなた 'comp'を与える(そのインターフェイスのオブジェクトを返すように入力することができますが、あなたができる持っていることができますね型付きの第2の変数に割り当てます)。または、単に 'comp'をそのインタフェースにキャストしてください(おそらく' any'を介して)。 – Thilo

+0

残念ながら 'define'は何も返しません。 thatsなぜd.tsファイルに定義されている 'sap.ui.core.mvc.Controller'(フレームワークSAPUI5)にキャストしているのですか?最も簡単な方法は、 –

+1

'クラスに特定の機能が実装されていないことを宣言する 'の両方を組み合わせる方法です:それは[抽象クラス](https://www.typescriptlang.org/docs/handbook/classes.html)となります –

答えて

2

あなたはそれを実装せずに機能を宣言してもよいです。

//example class 
class AppComponent { 
    constructor() { } 
    setModel:() => void; 
} 

//create class 
var comp: AppComponent = new AppComponent(); 

//hand over to framework 
fw.define("Component", comp); 

//now I want to be able to call the added functions such as: 
comp.setModel(/*some model*/); 
+0

thats私は何が必要なのです、ありがとう。しかし、矢印機能を持たない方法はありますか? –

+0

TypeScriptが関数を宣言する方法。 – Rodris

+0

しかし、矢印関数として宣言しているので、派生クラスで上書きしたい場合は、矢印関数も使用する必要があります。 (これは、クラスインスタンス 'this'よりも別の 'this 'を持つ関数を呼び出すため、フレームワークに問題を引き起こします)。矢印関数' this'はクラスインスタンスにバインドされます。 –

関連する問題