可以將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