2017-06-19 2 views
0

Ich möchte in der Lage sein, den Typ von etwas zu bestimmen, bevor ich es verwende. Also habe ich den Wert "y" und "N", die ich in boolean konvertieren möchte, wenn das Feld boolesch ist.
Ich möchte das Feld nicht hartcodieren, also gehe ich durch das Objekt, um den Wert festzulegen. Gibt es eine Möglichkeit, den Typ zu überprüfen, bevor Sie ihn festlegen? HierTypescript Get Typ aus der Klasse, die nicht definiert ist

ist ein Beispiel für ein Objekt:

export class test { 
    id: string; 
    foo: number; 
    bar: boolean; 
} 

habe ich versucht, dies zu tun Code jedoch gibt es nicht definiert, bis der Wert gesetzt worden ist ... aber von diesem Punkt hätte ich überschrieben, was das Objekt sollte sein (wie wäre es String jetzt sein)

typeof test['bar'] 
+3

Sie können nicht. Während diese Eigenschaften im Typoskript-Kontext vorhanden sind, sind diese Eigenschaften beim Kompilieren nach js nicht mehr vorhanden. Die einzige Möglichkeit, sie zu behalten, besteht darin, ihnen einen Wert zuzuweisen, oder Sie können die [Metadaten-Dekoratoren] (https://www.typescriptlang.org/docs/handbook/decorators.html#metadata) verwenden, um das für Sie zu speichern. –

+0

@ NitzanTomer, denkst du, dass das Hinzufügen eines Set-Balkens in die Klasse und das Erfüllen der Logik dazu führen würde, was ich brauche? etwas wie dieses: class test { bar: boolean; set bar (bar: boolean | string) { this.bar = (typeof bar === "string")? ((bar === "Y")? wahr: falsch): bar; } –

+0

Ja, das ist die Idee hinter 'Setter'. Aber Sie werden nicht in der Lage sein, Ihre Mitgliederbar zu nennen und die Methode auf die gleiche Weise zu benennen. Normalerweise verwenden Leute dann '_bar' in diesem Fall. Auch beim nächsten Mal redigieren Sie Ihre Frage und fügen Sie den Code dort hinzu und antworten Sie nur mit der Aussage, dass die Frage aktualisiert wurde. Es ist schwer Code in Kommentaren zu lesen –

Antwort

-1

ich die Art von etwas zu bestimmen, in der Lage sein wollen, bevor ich es verwenden

Für Klassen können Sie instanceof verwenden. Beispiel

class Foo{} 
const foo = new Foo(); 
console.log(foo instanceof Foo); // TRUE 

Mehr

Typoskript hat keine spezielle Laufzeittypinformationen über das, was JavaScript hat. Das heißt, TypeScript versteht die Verwendung von JavaScript-Metadatenprüfungen wie instanceof und typeof.

Verwandte Themen