如果这是一个有点愚蠢的问题,我深表歉意。我听说过一些有关 Typescript 中的调用签名的信息,但我不明白它们到底是做什么的。 Typescript 文档说:
在 JavaScript 中,函数除了可调用之外还可以具有属性。但是,函数类型表达式语法不允许声明属性。如果我们想用属性来描述可调用的东西,我们可以在对象类型中编写调用签名:
type DescribableFunction = {
description: string;
(someArg: number): boolean;
};
function doSomething(fn: DescribableFunction) {
console.log(fn.description + " returned " + fn(6));
}
该文档没有给出任何有关如何实际调用的示例doSomething
(我也没有找到关于该主题的任何资源),并且我对“可使用属性调用的东西”的含义感到困惑。到底是什么(someArg: number): boolean;
意思是?看起来它正在定义一个返回类型为布尔值的函数,该函数采用名为的数字参数someArg
,但传入函数不会执行任何操作。那么...到底是什么意思呢?同样,我研究了调用签名,但我发现的所有内容几乎都只是说“调用签名详细描述了函数”,这并不是很有帮助。到底是什么are呼叫签名?
你实际上会如何调用 doSomething
这是一个函数,所以你可以调用它(从内部doSomething
或从外部)就像您想要的任何功能一样:fn(6)
是一个调用它的例子。
我对“可通过属性调用的东西”的含义感到困惑
函数是 JavaScript 中一种特殊的对象,任何对象都可以具有与其关联的任意键值对。通常看起来很奇怪,但有可能:
const myFn = (someArg) => {
return someArg > 5;
};
myFn.description = 'checks if arg is greater than 5';
console.log(myFn(10));
console.log(myFn.description);
这是用纯 JavaScript 编写的。 TypeScript 的工作方式相同,只是您需要正确输入内容。
(someArg: number): boolean; 到底是做什么的?意思是?看起来它正在定义一个返回类型为 boolean 的函数,该函数采用名为 someArg 的数字参数,
非常正确。
但传入一个函数不会做任何事情
它应该。这是一个 JS 中的例子:
const myFn = (someArg) => {
return someArg > 5;
};
myFn.description = 'checks if arg is greater than 5';
function doSomething(fn) {
console.log(fn.description + " returned " + fn(6));
}
doSomething(myFn);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)