2016-06-13 5 views
4

「新しい」キーワードで呼び出すことができますコンパイル中にエラーが発生しました(最終的にはコンパイルして動作します):のみ無効関数が(読みやすくするために変更された)、私は方法を以下に私の活字体のコードで財団の明らかプラグインを使用しようとしている

TS2350: Only a void function can be called with the 'new' keyword. 

どうすればいいですか?インターフェイスに基づいて

Typescript Playground - code illustrating the problem

+0

私はあなたが物事をめちゃくちゃにされていると思います。 Revealがオブジェクトを返す関数であれば、なぜ新しいことをしたいのですか? – iberbeu

+0

これまでに作ったのは唯一の方法です... – Wiktor

+2

遊び場のコードに基づいて、 'var popup = Foundation.Reveal($( '#element'))'(つまり 'new ') –

答えて

3

interface FoundationSitesStatic { 
    Reveal(element:Object, options?:IRevealOptions): Reveal; 
} 

あなたは(コンストラクタを呼び出すために使用される)newオペレータでそれを呼び出すことはできません。

ので修正:

var popup = Foundation.Reveal($('#element')); 
+4

うん、それはコンパイルされますが、動作しません:)それは私がこの質問をした理由です;) – Wiktor

+0

何が*動作しますが、コンパイルしませんか? – basarat

+1

JavaScriptが有効だと思いますが、TypeScriptでは無効です。 @Wiktorのように、TypeScriptがJavaScriptのスーパーセットだと言っているので、それも私を混乱させます。しかし今、実際にはそうではないようです。 –

0

を私はtypescriptですコンパイラアップを遮断する方法を見つけるが、これは(あなたの注意でそれを行う)型チェックを放棄します。

var popup = new (Foundation.Reveal as any)($('#element')); 

その他の例:

function User2(name) { 
    if (this instanceof User2) { 
     this.name = name; 
    } 
    else { 
     return new (User2 as any)(name); 
    } 
} 
関連する問題