gpt4 book ai didi

typescript - TS 手册上的调用签名示例

转载 作者:行者123 更新时间:2023-12-04 13:05:56 25 4
gpt4 key购买 nike

我正在阅读 Typescript 手册,现在,我目前停留在 Call Signatures 小节。在给出的例子中:

type DescribableFunction = {
description: string;
(someArg: number): boolean;
};

function doSomething(fn: DescribableFunction) {
console.log(fn.description + " returned " + fn(6));
}
我无法在 TS Playground 中弄清楚如何调用 doSomething功能。我尝试了以下但它不起作用。
doSomething({ description: "The code", (5): false})

最佳答案

一个 DescribableFunction首先是一个接受单个 number 的函数输入并返回 boolean .它还有一个 string -值description属性(property)。
从 TypeScript 3.1 开始,并在 microsoft/TypeScript#26368 中实现,您已被允许 add properties to functions after their declarations不会遇到编译器警告。所以你可以做一个 DescribableFunction比较直接。
以下是使用函数语句的方法:

function greaterThanTen(someArg: number) {
return someArg > 10;
}
greaterThanTen.description = "greaterThanTen";

doSomething(greaterThanTen); // "greaterThanTen returned false"
以下是使用函数表达式的方法:
const isEven: DescribableFunction = someArg => someArg % 2 === 0;
isEven.description = "isEven"

doSomething(isEven); // "isEven returned true"
如果你想要一个单线,你可以使用 Object.assign() 向目标添加属性并返回增强的目标,TypeScript 表示为 intersection函数类型和添加的属性对象。 (这甚至在 TypeScript 3.1 之前就有效。)观察:
const isNegative = Object.assign(
(someArg: number) => someArg < 0,
{ description: "isNegative" }
);
doSomething(isNegative); // "isNegative returned false"
Playground link to code

关于typescript - TS 手册上的调用签名示例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69504538/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com