2016-12-14 8 views
1

私はこの記事を、Minko Gechevによってself-invoking function in JavaScriptで見つけました。初期化直後に自分自身を呼び出すJavaScript関数を書く方法を教えてくれました。私はこれをどのようにタイプスクリプトで行うことができるのだろうか。 export class ComponentNameのコードを書くと、うまくいきません。 コードは、私が試した:IIFEのtypescript

import {Component, Input} from '@angular/core' 

@Component({...}) 

export class MyComponent{ 

    @Input() infoes; 

    (function(){ 
     console.log('testing'); 
    })(); 
} 

IDEが表示されたエラーがunexpected token. a constructor, accessor, method or property was expectedです。私はそれが導入されたクラスの概念と関係があると思う。

+1

だから、あなたが何をしようとしたのですか? – tymeJV

+0

TypeScriptはJavaScriptのスーパーセットです。有効なTypeScriptでない有効なJavaScriptはありません。それは、より多くの情報をお願いします。あなたはどんなエラーを出していますか? 「うまくいかない」とは決して十分な問題記述ではありません。 –

+0

'(function(){ console.log( 'testing'); })();これは私が試したものです。私がこれをタイプすると、その下のコードに**の "unused label" **という赤いアンダースコアが付きます。同時に、私が試みたコードは** "予期しないトークン、コンストラクタ、メソッド...が期待されていた"と言っています**。 –

答えて

3

あなたが持っているのは、IIFE(直ちに呼び出される関数式)です。 TypeScriptでは、一般に式が許可されている場所でのみ、IIFEを使用できます。 TypeScriptでは、独立した式をそこに置くことはできません。これは、許可されていません:

class Foo { 
    1+1; 
}; 

はしかし、これは許可されているフィールドを、初期化するために、生命維持を使用しています。

class Foo { 
    foo: string = (function bar(){ 
     console.log("testing"); 
     return "value"; 
    }()); 
}; 

new Foo(); 

Your'reはこれが実行された場合は、コンソール上でtestingを見に行きます。

class Foo { 
    function bar(){ 
     console.log('testing'); 
    ); 
} 

は、上記のクラスで機能です:


コメントに対処するために、あなたは、このいずれかを行うことはできません。それはクラスで方法である、次は異なっている:

class Foo { 
    bar(){ 
     console.log('testing'); 
    ); 
} 
+0

ありがとうございます!それは私の問題を解決しました! –

関連する問題