2017-12-22 27 views
-1

Ich bin neu in Typoskript und ich möchte wissen, was das Dienstprogramm der optionalen Eigenschaft Klasse in Typoskript ist? Und was ist der Unterschied zwischen:Optionale Eigenschaft Klasse in Typoskript

a?: number; 

a: number | undefined; 
+0

https://www.typescriptlang.org/docs/handbook/interfaces.html#optional-properties gibt Beispiele wo Sie sie verwenden könnten – jonrsharpe

Antwort

1

Optional Eigenschaft: In Typoskript können Sie eine Eigenschaft in Ihrer Schnittstelle angeben, die optional sein. Angenommen, Sie haben eine Schnittstelle für Mitarbeiter und mittlerer Name ist optional dann Ihren Code wie folgt aussehen:

interface IEmployee { 
    firstName: string; 
    lastName: string; 
    middleName?: string; 
} 

Wenn jemand Ihre Schnittstelle verwenden IEmployee dann Middle optional sein, aber Vorname und Nachname ist obligatorisch.

let emp: IEmployee = { firstName: "Hohn", lastName: "Doe" } 

Rohr Betreiber: Manchmal möchte man, dass eine Variable mehrere Art halten kann. Wenn Sie eine Eigenschaft als Nummer deklariert haben, kann sie nur die Nummer enthalten. Pipe-Operator kann Typoskript erkennen, dass es mehrere Typen enthalten kann. Ein anderer Fall, in dem der Pipe-Operator sehr nützlich ist, wenn Sie etwas von der Funktion zurückgeben und mehrere Typen zurückgeben können, hängt von der Bedingung ab.

Hope it

+0

So ist es wichtig in der Kompatibilität der Typen. Dasselbe Beispiel funktioniert für die Klasse, oder? – asv

+0

Pipe-Operator wird auch in der Klasse arbeiten, aber die optionale Eigenschaft ist nur für die Schnittstelle. Die optionale Eigenschaft in der Klasse hat keine Bedeutung. –

0

Parameter

Der Unterschied zwischen einem optionalen Parameter helfen wird, und ein number | undefined Parametertyp ist, dass Sie müssen ein Argument nicht liefern ...

function a(a?: number) { 
    return a; 
} 

function b(a: number | undefined) { 
    return a; 
} 

// Okay 
a(); 
b(1); 

// Not okay: Expected 1 arguments, but got 0. 
b(); 

Dies gilt für Funktionen, Methoden und Konstruktoren.

Strenge Null Checks

Wenn Sie auf strikte Null-Kontrollen wechseln, werden Sie feststellen, dass jede optionale Parameter oder eine Eigenschaft, wird automatisch eine Union-Typ erhalten. Das bedeutet id in dem unten stehenden Beispiel hat den Typen number | undefined, auch wenn Sie nur number angegeben:

// With strict null checks, this: 
class Example { 
    id?: number; 
} 

// ... is the same as this: 
class Example { 
    id?: number | undefined; 
} 

// ... and this: 
class Example { 
    id: number | undefined; 
} 

Ich würde empfehlen, das erste Beispiel verwendet, wie es Ihre Syntax konsistent zwischen Eigenschaften und Parametern hält.

Verwandte Themen