【问题标题】:Typescript - Self-Executing Anonymous FunctionsTypescript - 自执行匿名函数
【发布时间】:2017-05-22 14:32:02
【问题描述】:

如何使用类型脚本创建自执行匿名函数?

例如

(function() {
 var someClass = {
 }
}.call(this));

我想要一个可以用于 Node.js 的插件,也可以用于前端。

【问题讨论】:

  • 否,因为所有答案都不能产生关于输出的结果
  • 我其实不明白你的意思。

标签: javascript typescript


【解决方案1】:
/**
 * Self executing anonymous function using TS.
 */
(()=> {
    // Whatever is here will be executed as soon as the script is loaded.
    console.log('executed')
})();

我想要一个可用于 Node.js 的插件,也可用于前端。

在这种情况下,您应该在 AMD 中编译您的 TypeScript,并在前端使用 AMD 加载程序,例如 http://requirejs.org/docs/start.html

在服务器端,您还需要使用requirejs 节点包来加载文件。看看这个:http://requirejs.org/docs/node.html

基本上有两种方法可以将 TS 编译为 JS,使用 AMD 兼容浏览器,或者使用 CommonJS 兼容 node.js。在浏览器或服务器中加载 AMD 脚本需要使用兼容 AMD 的加载器,*requirejs** 就是其中之一。 (我会说最著名/最常用的)

【讨论】:

    【解决方案2】:

    TypeScript 中的第一条规则:任何有效的 JavaScript 都是有效的 TypeScript。

    不,目前还没有在 TS 中编写自执行匿名函数的特殊方法。

    但是,下面是一些可能对您的情况有用的代码。

    TS 中的每个类都被编译成一个(命名的)自执行匿名函数,它返回一个函数。

    例子:

    //ts
    class someClass {
      someProperty = "this is a property";
    }
    

    翻译成

    //js
    var someClass = (function () {
        function someClass() {
            this.someProperty = "this is a property";
        }
        return someClass;
    })();
    

    希望对你有所帮助。

    【讨论】:

    • 我希望 任何有效的 JavaScript 都是有效的 TypeScript 规则是正确的。 TypeScript 很棒,但我对完全有效的 JavaScript 的类型异常感到非常沮丧……我目前正在研究如何在 TypeScript 中创建 jQuery 插件……噩梦!
    【解决方案3】:

    Typescript 中一个自执行、立即、递归的顶级 React 函数:

    (function handleAutomatonTypeChange(newtype: AutomatonType) {
      ReactDOM.render(
        <Automaton automatonType={newtype}
                   onAutomatonTypeChange={handleAutomatonTypeChange} />,
        document.getElementById('automaton')
      );
    })('diadic');
    

    【讨论】:

      【解决方案4】:
      (function(){
          document.body.innerHTML = "Self Calling Function";
      }.call(this));
      

      【讨论】:

      • 请编辑您的答案以包含一些解释。仅代码的答案对教育未来的 SO 读者几乎没有作用。您的答案因质量低劣而在审核队列中。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-28
      相关资源
      最近更新 更多