让我说我有这样的事情:
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');
}
}
为什么这不起作用?有什么建议让它更性感吗?
答案 0 :(得分: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');
}
}
我认为你必须要做的就是你提出的前两种方法之一 - 这对我来说都很好。