打字稿中的IIFE函数

Jay*_*Shi 2 typescript angular

我发现这篇文章是Minko Gechev 用JavaScript编写自调用函数,它教我们如何编写一个在初始化后立即调用自身的JavaScript函数。我想知道我们如何在打字稿中做到这一点。我发现如果我在其中编写代码export class ComponentName,它将无法正常工作。我试过的代码:

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

@Component({...})

export class MyComponent{

    @Input() infoes;

    (function(){
        console.log('testing');
    })();
}
Run Code Online (Sandbox Code Playgroud)

IDE显示的错误是unexpected token. a constructor, accessor, method or property was expected。我认为这与引入的TypeScript类概念有关。

Lou*_*uis 5

您拥有的是IIFE(立即调用的函数表达式)。TypeScript确实允许IIFE,但仅在通常允许表达式的地方使用。TypeScript不允许孤立的表达式坐在那里。这也是不允许的:

class Foo {
    1+1;
};
Run Code Online (Sandbox Code Playgroud)

但是,这使用IIFE 初始化field,这是允许的:

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

new Foo();
Run Code Online (Sandbox Code Playgroud)

您将testing在控制台上查看是否已运行。


要解决评论,您也不能执行以下操作:

class Foo {
    function bar(){
        console.log('testing');
    );
}
Run Code Online (Sandbox Code Playgroud)

上面是一个类中的函数。这与以下内容不同,后者是类中的方法

class Foo {
    bar(){
        console.log('testing');
    );
}
Run Code Online (Sandbox Code Playgroud)