TypeScript 3.0 führt unknown
Typ gemäß seinem Wiki ein:
unbekannt ist jetzt ein reservierter Typname, da es sich jetzt um einen integrierten Typ handelt. Abhängig von Ihrer beabsichtigten Verwendung von unbekannt möchten Sie die Deklaration möglicherweise vollständig entfernen (zugunsten des neu eingeführten unbekannten Typs) oder in etwas anderes umbenennen.
Was ist der Unterschied zwischen unknown
und any
? Wann sollten wir unknown
über verwenden any
?
quelle
any
ist wiedynamic
undunknown
ist wieobject
. Ich mag,unknown
da es nur typsicherer ist. Verwirrende Namen.unknown
undobject
@nawfal ist, obwohl ich denke, ich sehe, was Sie in Bezug auf die Kontravarianz und Kovarianz erreichen (z. B. kann jedes Objekt dem Typ zugewiesen werden,object
obwohl fürunknown
jedes Objekt oder Primitiv zugewiesen werden kann -unknown
kann in ähnlicher Weiseany
oder sich selbstobject
zugewiesen werden und könnte sich selbst zugewiesen werdendynamic
).unknown
Nebenbei bemerkt, ich bin mir nicht sicher , warum die TS-Dokumente als Top-Typ bezeichnet werden, da sie nicht wirklich alle Typen enthalten. ¯_ (ツ) _ / ¯Der Unterschied zwischen Unbekanntem und Unbekanntem wird beschrieben als:
Um Ihre Frage zu beantworten, wann Sie
unknown
over verwenden solltenany
:In der TypeScript 3.0-Ankündigung finden Sie Beispiele für die Typprüfung einer Typvariablen
unknown
und eine ausführlichere Erläuterung.quelle
any
Art:Der
any
Typ repräsentiert alle möglichen JS-Werte. Jeder Typ ist dem Typ zuweisbarany
. Daher ist der Typany
ein universeller Supertyp des Typsystems. Der TS-Compiler erlaubt jede Operation mit eingegebenen Wertenany
. Beispielsweise:In vielen Fällen ist dies für den TS-Compiler zu nachsichtig. Das heißt, es werden Operationen zugelassen, von denen wir wissen könnten, dass sie zu einem Laufzeitfehler führen.
unknown
Art:Der
unknown
Typ repräsentiert (genau wieany
) alle möglichen JS-Werte. Jeder Typ ist dem Typ zuweisbarunknown
. Daher ist der Typunknown
ein weiterer universeller Supertyp des Typsystems (danebenany
). Allerdings ist der TS - Compiler nicht erlauben jede Operation auf Werte eingegebenunknown
. Darüber hinaus ist derunknown
Typ nur dem Typ zuweisbarany
. Ein Beispiel wird dies verdeutlichen:quelle