【发布时间】:2021-03-14 17:32:41
【问题描述】:
抱歉,如果这是一个有点愚蠢的问题。我听说过一些关于 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; 到底是什么意思?看起来它定义了一个返回类型为 boolean 的函数,它接受一个名为 someArg 的数字参数,但传入一个函数并没有做任何事情。那么……这到底是什么意思?同样,我研究了调用签名,但我发现的所有内容几乎都只是说“调用签名详细描述了函数”,这并不是很有帮助。 究竟是什么调用签名?
【问题讨论】:
-
调用签名只是定义函数接受的参数(及其类型)和函数返回的类型。如果接口具有调用签名,则意味着它所描述的值必须是函数。如果一个函数实现了一个调用签名,这意味着它的参数和返回类型必须符合该调用签名。
标签: typescript