Mat*_*ino 5 javascript typescript typescript1.5
只是为了娱乐,我试图在包含闭包的代码中使用TypeScript的强类型.这是原始JavaScript代码的样子:
var func = (function() {
var private_count = 0;
var increment = function() {
private_count += 1;
return private_count;
}
return increment;
}());
Run Code Online (Sandbox Code Playgroud)
这是我使用TypeScript实现此功能的最佳尝试:
var func: ()=>()=>number = (function(): ()=>number {
var _count: number = 0;
var increment: ()=>number = function(): number {
_count += 1;
return _count;
}
return increment;
}());
Run Code Online (Sandbox Code Playgroud)
func是一个返回一个返回数字的函数的函数.我已将其类型设置为'()=>()=> number',但编译器不喜欢它.我知道这不是TypeScript最实际的用法,但有没有人有任何修复编译错误的想法?
Dav*_*ret 11
您可以按原样保留代码.TypeScript已经通过查看初始赋值来确定代码中所有变量的类型.将鼠标悬停在变量上,您将看到它所找到的类型.
代码中的主要问题是类型func不正确.这个:
var func: () => () => number = ...
Run Code Online (Sandbox Code Playgroud)
......应该是这样的:
var func: () => number = ...
Run Code Online (Sandbox Code Playgroud)
请注意,不需要额外的() =>因为它不是返回返回数字的函数的函数.它只是一个返回数字的函数.
顺便说一句,如果你真的想明确输入所有内容,这是另一个解决方案:
var func: () => number = (() => {
var private_count: number = 0;
var increment: () => number = () => {
private_count += 1;
return private_count;
};
return increment;
})();
Run Code Online (Sandbox Code Playgroud)
但我建议只使用隐式类型(只要它们不是隐式any类型),但这只是个人偏好:
var func = (() => {
var private_count = 0;
var increment = () => {
private_count += 1;
return private_count;
};
return increment;
})();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9941 次 |
| 最近记录: |