如何在 TypeScript 中将函数作为变量调用 [关闭]

Posted

技术标签:

【中文标题】如何在 TypeScript 中将函数作为变量调用 [关闭]【英文标题】:How to Call function as a variable in TypeScript [closed] 【发布时间】:2020-11-16 16:28:55 【问题描述】:

示例:

创建函数

const isElementLoaded = () => 
     //Logic
              return true;
    

使用 this.isElementLoaded 调用函数:

  if (this.isElementLoaded)
   
        //output true
  

【问题讨论】:

this.isElementLoaded() ? (顺便说一下,就像打字稿或javascript中的任何函数一样) 我不想使用圆括号 您可以使用 getter 代替,它的使用类似于属性。 get isElementLoaded(): boolean return true; 为什么不想使用括号? @evolutionxbox 可能是他的 (,) 键损坏/不起作用? 【参考方案1】:

如果您不想使用(),则需要将其设为访问器属性。 (在没有() 的情况下调用它的唯一另一种方法是将它用作标记模板文字上的标记函数,这似乎与您正在做的事情无关。:-))

class 中,您可以这样做:

class Example 
    get isElementLoaded() 
        return /*...appropriate value...*/;
    

在对象字面量中,基本相同:

const obj = 
    get isElementLoaded() 
        return /*...appropriate value...*/;
    
;

在任何一种情况下,TypeScript 都应该能够从您的 return 语句中推断出返回类型,但如果需要,请添加注释,例如:

class Example 
    get isElementLoaded(): boolean 
        return /*...appropriate value...*/;
    


如果您想在对象创建后为其添加访问器,请使用defineProperty

Object.defineProperty(obj, "isElementLoaded", 
    get() 
        return /*...appropriate value...*/;
    ,
    // flags here if appropriate; they default to `false` if omitted
);

您需要确保对象的类型信息包括访问器(可能作为可选属性)。

【讨论】:

【参考方案2】:

要么你使用一个函数然后你需要使用()来调用函数(那是TypeScript/JavaScript语法):

const isElementLoaded = () => 
     //Logic
              return true;
    


  // in a function:

  if (this.isElementLoaded()) 
        //output true
  

或者,您可以使用带有 getter 的 class 上的属性:

 get isElementLoaded() 
     //Logic
              return true;
    

 // in a function

  if (this.isElementLoaded) 
        //output true
  

【讨论】:

谢谢我的回答!!!【参考方案3】:

tl;dr:使用 this.isElementLoaded()

你实际上并没有调用你在那里创建的函数。您正在使用箭头符号来创建一个函数,您可以这样做

function isElementLoaded(...)...

这会更清楚,也许你必须调用它才能真正做某事。只需调用您引用函数体的函数的名称 - 但这并没有以任何方式进行。 这是一个快速试用示例:https://jsbin.com/kekifugoqe/edit?js,console 点击“运行”,您会看到输出的不同。

【讨论】:

以上是关于如何在 TypeScript 中将函数作为变量调用 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

如何在 C# 函数中将 jquery 变量作为参数传递

如何在 Maxima 中将列表作为变量参数函数传递?

如何在域类中将 Taglib 作为函数调用

如何在 C++ 中将运算符作为函数调用

TypeScript:如何在 0.8.0.0 之后的版本中将 null 传递给重载函数?

在shell脚本中将变量的值作为命令行参数传给程序