@@ -410,7 +410,7 @@ interface ZoneSpec {
410
410
onHasTask ?:
411
411
( delegate : ZoneDelegate , current : Zone , target : Zone , hasTaskState : HasTaskState ) => void ;
412
412
}
413
- ;
413
+
414
414
415
415
/**
416
416
* A delegate when intercepting zone operations.
@@ -463,13 +463,12 @@ type HasTaskState = {
463
463
/**
464
464
* Task type: `microTask`, `macroTask`, `eventTask`.
465
465
*/
466
- type TaskType = string ; /* TS v1.8 => " microTask" | " macroTask" | " eventTask" */
466
+ type TaskType = ' microTask' | ' macroTask' | ' eventTask' ;
467
467
468
468
/**
469
469
* Task type: `notScheduled`, `scheduling`, `scheduled`, `running`, `canceling`.
470
470
*/
471
- type TaskState =
472
- string ; /* TS v1.8 => "notScheduled", "scheduling", "scheduled", "running", "canceling" */
471
+ type TaskState = 'notScheduled' | 'scheduling' | 'scheduled' | 'running' | 'canceling' ;
473
472
474
473
475
474
/**
@@ -576,15 +575,15 @@ interface Task {
576
575
}
577
576
578
577
interface MicroTask extends Task {
579
- /* TS v1.8 => type: 'microTask'; */
578
+ type : 'microTask' ;
580
579
}
581
580
582
581
interface MacroTask extends Task {
583
- /* TS v1.8 => type: 'macroTask'; */
582
+ type : 'macroTask' ;
584
583
}
585
584
586
585
interface EventTask extends Task {
587
- /* TS v1.8 => type: 'eventTask'; */
586
+ type : 'eventTask' ;
588
587
}
589
588
590
589
/**
@@ -613,9 +612,11 @@ const Zone: ZoneType = (function(global: any) {
613
612
}
614
613
615
614
const NO_ZONE = { name : 'NO ZONE' } ;
616
- const notScheduled = 'notScheduled' , scheduling = 'scheduling' , scheduled = 'scheduled' ,
617
- running = 'running' , canceling = 'canceling' ;
618
- const microTask = 'microTask' , macroTask = 'macroTask' , eventTask = 'eventTask' ;
615
+ const notScheduled : 'notScheduled' = 'notScheduled' , scheduling : 'scheduling' = 'scheduling' ,
616
+ scheduled : 'scheduled' = 'scheduled' , running : 'running' = 'running' ,
617
+ canceling : 'canceling' = 'canceling' ;
618
+ const microTask : 'microTask' = 'microTask' , macroTask : 'macroTask' = 'macroTask' ,
619
+ eventTask : 'eventTask' = 'eventTask' ;
619
620
620
621
class Zone implements AmbientZone {
621
622
static __symbol__ : ( name : string ) => string = __symbol__ ;
@@ -736,7 +737,7 @@ const Zone: ZoneType = (function(global: any) {
736
737
'A task can only be run in the zone of creation! (Creation: ' +
737
738
( task . zone || NO_ZONE ) . name + '; Execution: ' + this . name + ')' ) ;
738
739
const reEntryGuard = task . state != running ;
739
- reEntryGuard && ( task as ZoneTask ) . _transitionTo ( running , scheduled ) ;
740
+ reEntryGuard && ( task as ZoneTask < any > ) . _transitionTo ( running , scheduled ) ;
740
741
task . runCount ++ ;
741
742
const previousTask = _currentTask ;
742
743
_currentTask = task ;
@@ -757,30 +758,31 @@ const Zone: ZoneType = (function(global: any) {
757
758
// if the task's state is notScheduled, then it has already been cancelled
758
759
// we should not reset the state to scheduled
759
760
if ( task . state !== notScheduled ) {
760
- reEntryGuard && ( task as ZoneTask ) . _transitionTo ( scheduled , running ) ;
761
+ reEntryGuard && ( task as ZoneTask < any > ) . _transitionTo ( scheduled , running ) ;
761
762
}
762
763
} else {
763
764
task . runCount = 0 ;
764
- this . _updateTaskCount ( task as ZoneTask , - 1 ) ;
765
- reEntryGuard && ( task as ZoneTask ) . _transitionTo ( notScheduled , running , notScheduled ) ;
765
+ this . _updateTaskCount ( task as ZoneTask < any > , - 1 ) ;
766
+ reEntryGuard &&
767
+ ( task as ZoneTask < any > ) . _transitionTo ( notScheduled , running , notScheduled ) ;
766
768
}
767
769
_currentZoneFrame = _currentZoneFrame . parent ;
768
770
_currentTask = previousTask ;
769
771
}
770
772
}
771
773
772
774
scheduleTask < T extends Task > ( task : T ) : T {
773
- ( task as any as ZoneTask ) . _transitionTo ( scheduling , notScheduled ) ;
775
+ ( task as any as ZoneTask < any > ) . _transitionTo ( scheduling , notScheduled ) ;
774
776
const zoneDelegates : ZoneDelegate [ ] = [ ] ;
775
- ( task as any as ZoneTask ) . _zoneDelegates = zoneDelegates ;
777
+ ( task as any as ZoneTask < any > ) . _zoneDelegates = zoneDelegates ;
776
778
task . zone = this ;
777
779
task = this . _zoneDelegate . scheduleTask ( this , task ) as T ;
778
- if ( ( task as any as ZoneTask ) . _zoneDelegates === zoneDelegates ) {
780
+ if ( ( task as any as ZoneTask < any > ) . _zoneDelegates === zoneDelegates ) {
779
781
// we have to check because internally the delegate can reschedule the task.
780
- this . _updateTaskCount ( task as any as ZoneTask , 1 ) ;
782
+ this . _updateTaskCount ( task as any as ZoneTask < any > , 1 ) ;
781
783
}
782
- if ( ( task as any as ZoneTask ) . state == scheduling ) {
783
- ( task as any as ZoneTask ) . _transitionTo ( scheduled , scheduling ) ;
784
+ if ( ( task as any as ZoneTask < any > ) . state == scheduling ) {
785
+ ( task as any as ZoneTask < any > ) . _transitionTo ( scheduled , scheduling ) ;
784
786
}
785
787
return task ;
786
788
}
@@ -807,15 +809,15 @@ const Zone: ZoneType = (function(global: any) {
807
809
}
808
810
809
811
cancelTask ( task : Task ) : any {
810
- ( task as ZoneTask ) . _transitionTo ( canceling , scheduled , running ) ;
812
+ ( task as ZoneTask < any > ) . _transitionTo ( canceling , scheduled , running ) ;
811
813
this . _zoneDelegate . cancelTask ( this , task ) ;
812
- this . _updateTaskCount ( task as ZoneTask , - 1 ) ;
813
- ( task as ZoneTask ) . _transitionTo ( notScheduled , canceling ) ;
814
+ this . _updateTaskCount ( task as ZoneTask < any > , - 1 ) ;
815
+ ( task as ZoneTask < any > ) . _transitionTo ( notScheduled , canceling ) ;
814
816
task . runCount = 0 ;
815
817
return task ;
816
818
}
817
819
818
- private _updateTaskCount ( task : ZoneTask , count : number ) {
820
+ private _updateTaskCount ( task : ZoneTask < any > , count : number ) {
819
821
const zoneDelegates = task . _zoneDelegates ;
820
822
if ( count == - 1 ) {
821
823
task . _zoneDelegates = null ;
@@ -989,14 +991,14 @@ const Zone: ZoneType = (function(global: any) {
989
991
}
990
992
991
993
scheduleTask ( targetZone : Zone , task : Task ) : Task {
992
- let returnTask : ZoneTask = task as ZoneTask ;
994
+ let returnTask : ZoneTask < any > = task as ZoneTask < any > ;
993
995
if ( this . _scheduleTaskZS ) {
994
996
if ( this . _hasTaskZS ) {
995
997
returnTask . _zoneDelegates . push ( this . _hasTaskDlgtOwner ) ;
996
998
}
997
999
returnTask = this . _scheduleTaskZS . onScheduleTask (
998
- this . _scheduleTaskDlgt , this . _scheduleTaskCurrZone , targetZone , task ) as ZoneTask ;
999
- if ( ! returnTask ) returnTask = task as ZoneTask ;
1000
+ this . _scheduleTaskDlgt , this . _scheduleTaskCurrZone , targetZone , task ) as ZoneTask < any > ;
1001
+ if ( ! returnTask ) returnTask = task as ZoneTask < any > ;
1000
1002
} else {
1001
1003
if ( task . scheduleFn ) {
1002
1004
task . scheduleFn ( task ) ;
@@ -1054,8 +1056,8 @@ const Zone: ZoneType = (function(global: any) {
1054
1056
}
1055
1057
1056
1058
1057
- class ZoneTask implements Task {
1058
- public type : TaskType ;
1059
+ class ZoneTask < T extends TaskType > implements Task {
1060
+ public type : T ;
1059
1061
public source : string ;
1060
1062
public invoke : Function ;
1061
1063
public callback : Function ;
@@ -1068,7 +1070,7 @@ const Zone: ZoneType = (function(global: any) {
1068
1070
_state : TaskState = 'notScheduled' ;
1069
1071
1070
1072
constructor (
1071
- type : TaskType , source : string , callback : Function , options : TaskData ,
1073
+ type : T , source : string , callback : Function , options : TaskData ,
1072
1074
scheduleFn : ( task : Task ) => void , cancelFn : ( task : Task ) => void ) {
1073
1075
this . type = type ;
1074
1076
this . source = source ;
0 commit comments