gpt4 book ai didi

javascript - 在 TypeScript 中编写闭包

转载 作者:数据小太阳 更新时间:2023-10-29 05:51:55 24 4
gpt4 key购买 nike

只是为了好玩,我正在尝试在包含闭包的代码中使用 TypeScript 的强类型。原始 JavaScript 代码如下所示:

var func = (function() {

var private_count = 0;

var increment = function() {
private_count += 1;
return private_count;
}

return increment;
}());

这是我用 TypeScript 实现它的最佳尝试:

var func: ()=>()=>number = (function(): ()=>number {

var _count: number = 0;

var increment: ()=>number = function(): number {
_count += 1;
return _count;
}

return increment;
}());

func 是一个返回数字的函数。我已将其类型设置为“()=>()=>number”,但编译器不喜欢这样。我知道这不是 TypeScript 的最实际用途,但有没有人有任何修复编译错误的想法?

最佳答案

您可以按原样保留代码。 TypeScript 已经通过查看初始赋值确定了代码中所有变量的类型。将鼠标悬停在变量上,您将看到它计算出的类型。

代码中的主要问题是func的类型不正确。这:

var func: () => () => number = ...

...应该是这样的:

var func: () => number = ...

请注意,不需要额外的 () =>,因为它不是返回数字的函数。它只是一个返回数字的函数。


顺便说一句,如果你真的想显式输入所有内容,这是另一个解决方案:

var func: () => number = (() => {

var private_count: number = 0;

var increment: () => number = () => {
private_count += 1;
return private_count;
};

return increment;
})();

但我建议只使用隐式类型(只要它们不是隐式 any 类型),但这只是个人偏好:

var func = (() => {

var private_count = 0;

var increment = () => {
private_count += 1;
return private_count;
};

return increment;
})();

关于javascript - 在 TypeScript 中编写闭包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32380345/

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