2016-12-14 3 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입니다. 나는 이것이 TypeScript가 도입 한 클래스 개념과 관련이 있다고 생각한다.

+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(); 

END_LINK하면 관심있는 콘솔에 testing를 볼 것 .

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

는 위의 클래스에 기능입니다 :


이 코멘트를 해결하기 위해, 당신이 하나를 수행 할 수 없습니다.

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

고마워요! 그것은 내 문제를 해결했습니다! –

관련 문제