Typescript Generics - Extending a class -


as example, have following class:

module app.components.base {     export class basecontroller<s extends iappscope, a> {         public data:string;          constructor(public $scope: s, public service: a, public $state: ng.ui.istateservice, public $ionichistory) {             console.log('base controller loaded!');             console.log($scope);             $scope.vm = this;         }     } } 

then have separate class:

module app.components.properties {      export class propertiescontroller extends base.basecontroller<ipropertiesscope, app.services.propertyservice> {      } } 

so, in mind, says "the properties controller extends base controller. properties controller therefore should have this.$scope, , this.$scope should of type ipropertiesscope since generic type s inherits ipropertiesscope interface`."

however, $scope undefined in constructor of base class. why value undefined?

$scope undefined in constructor of base class. why value undefined?

this because of way angular's default dependency injection works. though you know constructor arguments , typescript knows constructor arguments, angular see in code :

function propertiescontroller() {    _super.apply(this, arguments); } 

you can see typescript pass thorugh arguments fine, angular see propertiescontroller() , not dependency inject anything.

fix: have explicit constructor

alternatively have explicit static $inject member on class https://www.youtube.com/watch?v=wdtvn_8k17e


Comments

Popular posts from this blog

apache - PHP Soap issue while content length is larger -

asynchronous - Python asyncio task got bad yield -

javascript - Complete OpenIDConnect auth when requesting via Ajax -