1- class Symbol {
1+ export class Symbol {
22 value : string ;
33
44 constructor ( value : string ) {
55 this . value = value ;
66 }
77}
88
9- type StringSymbol = string | Symbol ;
9+ type ConnectiveUnion = Connective | Symbol | string ;
1010
11- class Connective {
11+ export class Connective {
1212 arity : number ;
13- args : Symbol [ ] = [ ] ;
13+ args : ( Connective | Symbol ) [ ] = [ ] ;
1414
15- constructor ( ...args : ( StringSymbol ) [ ] ) {
16- args . forEach ( ( arg : StringSymbol ) => {
15+ constructor ( ...args : ( ConnectiveUnion ) [ ] ) {
16+ args . forEach ( ( arg : ConnectiveUnion ) => {
1717 if ( typeof arg === 'string' ) {
1818 arg = new Symbol ( arg ) ;
1919 }
@@ -23,32 +23,32 @@ class Connective {
2323 }
2424}
2525
26- class Not extends Connective {
27- constructor ( arg : StringSymbol ) {
26+ export class Not extends Connective {
27+ constructor ( arg : ConnectiveUnion ) {
2828 super ( arg ) ;
2929 }
3030}
3131
32- class And extends Connective {
33- constructor ( arg1 : StringSymbol , arg2 : StringSymbol ) {
32+ export class And extends Connective {
33+ constructor ( arg1 : ConnectiveUnion , arg2 : ConnectiveUnion ) {
3434 super ( arg1 , arg2 ) ;
3535 }
3636}
3737
38- class Or extends Connective {
39- constructor ( arg1 : StringSymbol , arg2 : StringSymbol ) {
38+ export class Or extends Connective {
39+ constructor ( arg1 : ConnectiveUnion , arg2 : ConnectiveUnion ) {
4040 super ( arg1 , arg2 ) ;
4141 }
4242}
4343
44- class If extends Connective {
45- constructor ( arg1 : StringSymbol , arg2 : StringSymbol ) {
44+ export class If extends Connective {
45+ constructor ( arg1 : ConnectiveUnion , arg2 : ConnectiveUnion ) {
4646 super ( arg1 , arg2 ) ;
4747 }
4848}
4949
50- class Iff extends Connective {
51- constructor ( arg1 : StringSymbol , arg2 : StringSymbol ) {
50+ export class Iff extends Connective {
51+ constructor ( arg1 : ConnectiveUnion , arg2 : ConnectiveUnion ) {
5252 super ( arg1 , arg2 ) ;
5353 }
5454}
0 commit comments