可以将void
指定为TypeScript中泛型函数的类型参数。并且它对函数的返回值正常工作。但是,void
是一种参数,但它不清楚可以使用哪种值。有没有办法为void
类型的参数指定参数?如果否,为什么可以声明这样的函数?void作为TypeScript中泛型函数的参数的类型
8
A
回答
0
原来,它很容易得到无效的价值。虽然技术上它仍然是undefined
值,但打字稿认为它是void类型,这正是我们所需要的:
var voidValue = (function() { })();
7
注意:我们可能会考虑禁止void类型声明变量,因为他们还是没有的。但是,由于Void允许作为泛型类型或函数的类型参数,因此禁止使用Void属性或参数是不可行的。
4
可以使用void
作为类型参数,但不应将其用作类型。
事实上,尽管你可以在目前类型注释使用它,这是不可能指定一个值:
var x: void = ???; // cannot supply a value
下面被示出为一种类型的自变量使用的空隙的:
class Example<TReturn> {
process(func:() => TReturn) {
return func();
}
}
此类中的type参数用于指定函数的返回类型。这意味着我可能希望指定该函数将具有void
类型。所以它必须被允许作为类型参数。
var example = new Example<void>();
现在,当我写调用example.process
,自动完成会告诉我,我传给需要的参数满足以下类型:
func:() => void
而且它还会告诉我,example.process
本身在这种情况下是无效的。
意图不是void
永远用于注释一个类型,但是因为有正当的理由允许它作为类型参数它当前不被检查。这意味着你可以创造一些无效的,但你会很难使用它:
class Example<T> {
process(func: T) {
// if T is void, this is all wrong
}
}
var example = new Example<void>();
在这个例子无效(不显示任何错误),您将无法将呼叫写入example.process
,因为你无法传递有效的参数。
0
你可以做这样的事情:
class Example<T> {
process(func: T = undefined) {
// use default undefined parameter
}
}
var example = new Example<void>();
exmple.process();
我使用打字稿1.8.7,它对我很好。
相关问题
- 1. 泛型类没有泛型函数中的类型参数
- 2. 作为参数的泛型类型
- 3. TypeScript泛型和函数参数
- 4. Typescript中的Cast函数参数类型
- 5. 作为Java参数中的参数的泛型类型
- 6. 泛型类型作为泛型类型参数
- 7. C#将泛型类型作为泛型类型参数传递?
- 8. 空类型作为泛型参数
- 9. 泛型类型参数作为PARAMS
- 10. 通C#泛型类型作为参数
- 11. C#泛型类型作为参数
- 12. 在C#中传递泛型作为泛型类型参数
- 13. 泛型函数参数类型推断
- 14. 如何指定泛型类型作为函数参数
- 15. 传递了两个泛型类型作为函数参数
- 16. 在TypeScript中映射泛型函数中的映射类型
- 17. 如何使用泛型类型数组和泛型类作为构造函数中的参数?
- 18. 目的类型为void的Java泛型
- 19. 在泛型类C中调用类型参数的函数#
- 20. Typescript作为Angular2组件的泛型类
- 21. 使用扩展参数的类型传递作为泛型类型参数
- 22. One Typescript函数参数 - 可选类型?
- 23. 将参数传递给泛型类型VB.Net中的新构造函数泛型
- 24. 使用方法参数作为泛型类型参数
- 25. Java:创建作为函数参数传递的泛型类型的实例
- 26. 泛型作为参数
- 27. 函数类型在swift中作为参数类型的优点?
- 28. Java泛型类作为参数
- 29. C# - 构造函数中的类型参数 - 没有泛型
- 30. 使用Type对象作为C#中泛型的类型参数
对此我很抱歉。你能向我强调你的问题的一部分,我还没有回答? – Fenton