我发现这篇文章是由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引入的类概念有关。
答案 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');
);
}