Ich habe gelesen this, aber es ist unklar, was wäre der Unterschied zwischen 'nie' und 'void' Typ?Was ist der Unterschied zwischen Nie und Leere in Typoskript?
Antwort
In Imperativsprachen kann void
als ein Typ mit einem einzelnen Wert betrachtet werden. Solche Sprachen bieten keine Möglichkeit, diesen Wert zu konstruieren oder zu konsumieren, aber eine void
-Funktion kann als Rückgabe dieses trivialen Werts angesehen werden.
Im Gegensatz dazu ist never
ein Typ, der keine Werte enthält, was bedeutet, dass eine Funktion mit diesem Rückgabetyp niemals normal zurückkehren kann. Dies bedeutet, entweder eine Ausnahme auszulösen oder nicht zu beenden.
Lees sehr gute Antwort, eine andere Art und Weise zu denken es zu ergänzen ist, dass in einem richtig typisierte Programm, ein never
Wert nicht beobachtet werden kann.
Neben Funktionen, die nie zurückkehren (oder was immer Ausnahmen werfen), werden Sie die never
Art sehen, wenn eine Vereinigung Art von allen möglichen Bestandteilen ausgeschöpft ist:
// Example assumes --strictNullChecks
function fn(x: number | string) {
if (typeof x === 'number') {
// x: number in this block
} else if (typeof x === 'string') {
// x: string in this block
} else {
// x: never in this block
// this block does not run; the value of x cannot be observed
}
}
Auch für mehr a theorical Grund, mit --strictNullChecks
neue Flag, TypeScript benötigt einen neuen Bottom-Typ (seit null
und undefined
sind nicht mehr). Der Typ never
ist ein solcher Bottom-Typ und macht das TypeScript-Typsystem konsistenter.
Der Rückgabetyp von Promise.reject()
ist Promise<never>
, was "es wird nie aufgelöst" bedeutet.
Also, wenn eine Funktion Promise<never>
zurückgibt, denke ich, dass es nur Fehler zurückgibt. Auf der anderen Seite kann Promise<void>
ohne Wert aufgelöst werden.
- 1. Was ist der Unterschied zwischen Namespaces und Module in Typoskript
- 2. Was ist der Unterschied zwischen ‚erweitert‘ und ‚Geräte‘ in Typoskript
- 3. Was ist der Unterschied zwischen Var und Let in Typoskript?
- 4. Was ist der Unterschied zwischen zwei Code in Typoskript?
- 5. Ruby: leere Zeichenfolge und leere Zeichenfolge, was ist der Unterschied?
- 6. Whet ist der Unterschied zwischen Typoskript Module
- 7. Was ist der Unterschied zwischen `==` und `ist`?
- 8. Unterschied zwischen Typ [] und [Typ] in Typoskript
- 9. Was ist der Unterschied zwischen/* ... */und/** ... */
- 10. Was ist der Unterschied zwischen + = und = +?
- 11. Was ist der Unterschied zwischen $ (()) und Ausdruck?
- 12. Was ist der Unterschied zwischen NULL und Empty in Mysql
- 13. Was ist der Unterschied zwischen:.! und: r !?
- 14. Was ist der Unterschied zwischen Verilog! und ~?
- 15. Was ist der Unterschied zwischen Difftime und '-'?
- 16. Was ist der Unterschied zwischen $ und $$?
- 17. was ist der Unterschied zwischen [[], []] und [[]] * 2
- 18. Was ist der Unterschied zwischen `&` und `ref`?
- 19. Was ist der Unterschied zwischen $ (...) und `...`
- 20. Was ist der Unterschied zwischen .Equals und ==
- 21. Was ist der Unterschied zwischen "$^N" und "$ +"?
- 22. Was ist der Unterschied zwischen? und ? = Nil
- 23. Was ist der Unterschied zwischen typescript.js und typescriptServices.js?
- 24. Was ist der Unterschied zwischen:
- 25. Was ist der Unterschied zwischen 'int?' und 'int' in C#?
- 26. Was ist der Unterschied zwischen @Inject und @Injectable in Angular 2 Typoskript
- 27. Was ist der Unterschied zwischen NaN und None?
- 28. Was ist der Unterschied zwischen: und :: und ::: in Javascript Grammatik
- 29. Was ist der Unterschied zwischen add und [] in der Wörterbuchoperation
- 30. Was ist der Unterschied zwischen XML-RPC und SOAP?
Scheint wie dies nicht der Fall ist. Siehe http://stackoverflow.com/questions/41291341/typescript-generics-void-never-oder-undefined – unional