0

私がこのようなものを持っているとしましょう:

interface Scope extends ng.Scope {
   getMeSome(id:string):number[];
}
export class AwesomeController {
    constructor (public $scope:Scope) {
       $scope.getMeSome = id => this.getMeSome(id);
    }
    getMeSome(id:string){
      console.log('Alright... alright... here it is'); 
    }
}

ご覧のとおり、3つの異なる場所に同じメソッドシグネチャがあります。もちろん、私はそれを少し減らして、その場でそれを行うことができます-コンストラクターで:

constructor (public $scope:Scope) {
   $scope.getMeSome = id => {
      console.log('Alright... alright... here it is'); 
   };
}

しかし、それはステロイドのようにコンストラクターの体を吹き飛ばします(あなたが数十の異なる方法を持っている場合)。だから私はなぜ私はそのようなことをすることができないのか疑問に思いました:

export class AwesomeController {
   constructor (public $scope:Scope) { }

   $scope.getMeSome(id:string) { // Can't extend $scope here, although I can do that in the constructor
      console.log('Alright... alright... here it is'); 
   }
}

なぜこれが機能しないのですか?それをよりセクシーにするための提案はありますか?

4

1 に答える 1

2

私が知る限り、クラスでは(モジュールとは異なり)、クラスを実行するのではなく、クラスを定義しているため、(メソッド本体ではなく)クラスの本体で割り当てを行うことはできません。したがって、この構文は機能しません。

export class AwesomeController {
    constructor (public $scope:Scope) {}
    $scope.getMeSome = id => {
      console.log('Alright... alright... here it is'); 
    }
}

また、他のクラスではなく、このクラスのメソッドを定義しているだけなので、上記の構文も機能しません。これは、期待される場所で別のクラスのメソッドをいじくり回しているためです。独自に定義する:

export class AwesomeController {
    constructor (public $scope:Scope) {}
    $scope.getMeSome(id:string) => {
      console.log('Alright... alright... here it is'); 
    }
}

私はあなたが提案した最初の2つの方法のうちの1つをしなければならないと思います-どちらも私にはうまく見えます。

于 2012-12-11T16:22:27.697 に答える