可以void在TypeScript中指定通用函数的类型参数.它适用于函数的返回值.但是,当void一种参数类型时,它不清楚可以使用什么值.有没有办法为void类型的参数指定参数?如果不是,为什么可以声明这样的功能?
注意:我们可能会考虑不允许声明Void类型的变量,因为它们没有用处.但是,由于允许Void作为泛型类型或函数的类型参数,因此禁止Void属性或参数是不可行的.
您可以投射undefined到void:
const x: void = undefined as void
Run Code Online (Sandbox Code Playgroud)
可以void用作类型参数,但不应将其用作类型。
实际上,尽管您目前可以在类型注释中使用它,但无法赋值:
var x: void = ???; // cannot supply a value
Run Code Online (Sandbox Code Playgroud)
void 作为类型参数的使用如下所示:
class Example<TReturn> {
process(func: () => TReturn) {
return func();
}
}
Run Code Online (Sandbox Code Playgroud)
此类中的类型参数用于指定函数的返回类型。这意味着我可能希望指定函数将具有void类型。所以它必须被允许作为类型参数。
var example = new Example<void>();
Run Code Online (Sandbox Code Playgroud)
现在,当我编写对 的调用时example.process,自动完成会告诉我我传递的参数需要满足以下类型:
func: () => void
Run Code Online (Sandbox Code Playgroud)
它还会告诉我在这种情况下它example.process本身是无效的。
目的不是void永远用于注释类型,而是因为有充分的理由允许它作为类型参数,所以当前不检查它。这意味着你可以创建一些无效的东西,但你很难使用它:
class Example<T> {
process(func: T) {
// if T is void, this is all wrong
}
}
var example = new Example<void>();
Run Code Online (Sandbox Code Playgroud)
在这个无效示例(没有显示任何错误)中,您将无法写入调用,example.process因为您无法传递有效参数。
事实证明,很容易获得 void 值。虽然从技术上讲它仍然是undefined值,但 TypeScript 认为它是 void 类型,这正是我们需要的:
var voidValue = (function () { })();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7201 次 |
| 最近记录: |