IIFE在打字稿中起作用

时间:2016-12-14 22:13:28

标签: angular typescript

我发现这篇文章是由Minko Gechev撰写的self-invoking function in JavaScript,教我们如何编写一个在初始化后自行调用的JavaScript函数。我想知道我们怎么能用打字稿做到这一点。 我发现如果我在export class ComponentName内编写代码,它将无效。 我试过的代码:

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 个答案:

答案 0 :(得分:5)

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

class Foo {
    1+1;
};

但是,这会使用IIFE 来初始化字段,这是允许的:

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

new Foo();

如果运行,您将在控制台上看到testing

要解决这些评论,您也不能这样做:

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

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

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