2017-04-06 2 views
0

Ich habe eine theoretische Frage. Gibt es eine Möglichkeit, einen Typ in TypeScript zu entwerfen, der die leere Menge bezeichnet? Ich habe versucht, eine mit Union, disjoint Union, Kreuzung und mehr zu definieren ...Empty set in type script

+0

Theoretisch würde Antwort in Boolean liegen. :) BTW was meinst du? Eine leere Schnittstelle? – Jai

Antwort

0

Ja, obwohl ich denke, die Nützlichkeit eines solchen Typs hängt viel von Ihrer Art der Programmierung ab. Sie könnten EmptySet wie folgt definieren:

interface ISet { 
    intersection: (s: ISet) => ISet; 
    union: (s: ISet) => ISet; 
} 

class EmptySet implements ISet { 
    intersection(s: ISet) { 
     return this; 
    } 

    union(s: ISet) { 
     return s; 
    } 
} 

class NonEmptySet implements ISet { ... } 

ISet der generischen Vertrag eines Satzes ist, ist EmptySet ein konkreter Typ, der diesen Vertrag implementiert. Offensichtlich kann man mit einem Set mehr Sachen machen als union und intersection, dies ist nur ein Beispiel.

+0

Danke, könntest du bitte erklären, warum sowas nicht funktioniert: typ Z = {a: zahl} & {a: string}; – David

+0

Ich bin mir nicht sicher, ob ich verstehe, wie Sie erwarten, dass es funktioniert? – pablochan

+0

Ich erwarte, dass es eine leere Menge ist, da a nicht beides sein kann, eine Zahl und eine Zeichenkette. – David