Ich habe Probleme mit dem Verständnis der Art und Weise, wie Werte von enums-Membern zum Definieren von Typen in Typescript verwendet werden können.Unerwartetes Verhalten mit Enum-Werten als Typen (in Typescript)
Ich verstehe in Typescript können Sie unäre Typen definieren, indem Sie ein primitives Objekt als Typ Wert angeben. Und Enum-Mitglieder haben einen numerischen Wert, der ihnen zugeordnet ist.
Im folgenden Beispiel bin ich Aliasing den Wert eines Enum-Mitglieder als Typ newType
. Alles macht Sinn, außer was in der letzten Zeile mit der Variablen d
passiert.
const enum blah {
test = 1,
};
type newType = blah.test;
var a: newType = 'a'; // ERROR (Type '"a"' is not assignable to type 'blah'.)
var b: newType = blah.foo; // ERROR (Property 'foo' does not exist on type 'typeof blah'.)
var c: newType = blah.test; // WORKS
var d: newType = 123; // WORKS...???
Die letzte Zuweisung funktioniert ohne Fehler. Was ist eine Erklärung dafür?
(Das ursprüngliche Beispiel kam von meinem Kollegen @michaelkyriacou während einer Diskussion über einstellige Typen in Maschinenschrift.)
Ist das nicht 'newType' in Ihrem Beispiel nur ein' number' so Ihr Beispiel würde Sinn machen? – Raven
@Raven was ich erwarte ist, dass der Typ ist der Wert '1', nicht eine' Nummer'. Das passiert, wenn Sie 'newType = 1' eingeben. –