Es ist möglich, void
als Typparameter für generische Funktion in TypeScript anzugeben. Und es funktioniert gut für Rückgabewerte von Funktionen. Wenn jedoch void
ein Typ eines Arguments ist, ist es nicht so klar, welcher Wert dafür verwendet werden kann. Gibt es eine Möglichkeit, einen Parameter für ein Argument vom Typ void
anzugeben? Wenn nein, warum ist es möglich, eine solche Funktion zu deklarieren?void als Typ eines Arguments einer generischen Funktion in TypeScript
Antwort
Es stellte sich heraus, es ist sehr einfach, einen Wert von void zu erhalten. Obwohl technisch ist es immer noch der undefined
Wert, aber Typoskript glaubt, dass es vom Typ Void, die genau das, was wir brauchen:
var voidValue = (function() { })();
HINWEIS: Wir betrachten könnte das Deklarieren von Variablen vom Typ Void disallowing, da sie keinen nützlichen Zweck dienen. Da Void jedoch als Typargument für einen generischen Typ oder eine generische Funktion zulässig ist, ist es nicht möglich, Void-Eigenschaften oder -Parameter zu verbieten.
Es ist möglich, void
als ein Typargument zu verwenden, aber Sie sollten es nicht als einen Typ verwenden.
In der Tat, obwohl Sie in der Lage sein, kann es in einer Typanmerkung zur Zeit zu verwenden, ist es unmöglich, einen Wert zuzuweisen:
var x: void = ???; // cannot supply a value
Die Verwendung von Leere als eine Art Argument ist unten dargestellt:
class Example<TReturn> {
process(func:() => TReturn) {
return func();
}
}
Das Argument type in dieser Klasse wird verwendet, um den Rückgabetyp einer Funktion anzugeben. Das bedeutet, dass ich angeben möchte, dass die Funktion den Typ void
hat. Also muss es als Typargument erlaubt sein.
var example = new Example<void>();
Nun, wenn ich den Anruf zu example.process
schreiben, Auto-Vervollständigung wird mir sagen, dass das Argument, das ich Bedürfnisse passieren die folgende Art erfüllen:
func:() => void
Und es wird mir auch sagen, dass example.process
selbst ist ungültig in diesem Fall.
Die Absicht ist nicht für void
jemals verwendet werden, um einen Typ zu kommentieren, aber da es gültige Gründe gibt, um es als ein Typargument zuzulassen, wird es derzeit nicht überprüft. Es bedeutet, dass Sie ungültige etwas schaffen können, aber Sie würden hart gedrückt werden, verwenden:
class Example<T> {
process(func: T) {
// if T is void, this is all wrong
}
}
var example = new Example<void>();
In diesem ungültigen Beispiel (die keine Fehler zeigen) Sie würde einen Anruf nicht in der Lage sein, zu schreiben, example.process
, weil Sie kein gültiges Argument übergeben konnten.
Sie etwas tun können:
class Example<T> {
process(func: T = undefined) {
// use default undefined parameter
}
}
var example = new Example<void>();
exmple.process();
I Typoskript bin mit 1.8.7 und es funktionierte für mich gut.
- 1. Generischen Typ in TypeScript erkennen
- 2. Warum ist die Angabe eines generischen Arguments als Schnittstelle kein Fehler bei einer Klassenbeschränkung?
- 3. Erstellen eines generischen Methoden-Dekorators in Typescript
- 4. Umwandlung eines Untertyps in einen als generischen Typ definierten Typ
- 5. Wie Sie den generischen Typ einer Typoskript-Funktion als Enum definieren
- 6. Void als literaler Typ?
- 7. TypeScript: void Rückgabetyp in einen beliebigen Typ konvertiert?
- 8. So geben Sie einen generischen Typ als generischen Typ an (höherwertige Typen)
- 9. Wie erhält man den Typ eines Arguments in Roslyn?
- 10. den Typ eines generischen in delphi Testen
- 11. TypeScript: Typ der aktuellen Klasse als Typvariable
- 12. Typescript: Typ eines Objekts definieren
- 13. Wie Klasse des generischen Arguments in einem CDI-Producer abrufen?
- 14. Typescript Pfeil Funktion Parameter Typ sicher
- 15. Erzwingen Sie einen generischen Typ als Schnittstelle?
- 16. Syntax eines Arguments
- 17. (TypeScript) Wie erfasst man den vom Benutzer in der generischen Funktion bereitgestellten Typ?
- 18. Generischen Typ eines Felds mit der Auswahl
- 19. Rückgabe eines Array von einer generischen Klasse
- 20. ungültiger 'Typ' (Zeichen) des Arguments
- 21. Get Art von generischen Typ in einer Liste in Java
- 22. Erzwingen eines (generischen) Werttyps als Referenz
- 23. kann den Typ eines CallExpr-Arguments nicht bekommen
- 24. typescript JSON.stringify loser Typ und Funktion
- 25. Typ Deklarationsreihenfolge in TypeScript
- 26. warum die Übergabe eines Arguments des Strukturzeigers in einer Funktion, die den Linklistenknoten erstellt, nicht funktioniert?
- 27. Wiederholen oder Schleifen eines Arguments
- 28. conexpr Void-Funktion abgelehnt
- 29. C# Typ Casting zu einer generischen Schnittstelle
- 30. Übergabe eines Arguments in einem Bash-Skript
Tut mir leid. Können Sie mir den Teil Ihrer Frage markieren, den ich nicht beantwortet habe? – Fenton