如何在 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 中将函数作为变量调用 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章