我需要添加" self"作为"用户关键字"但我无法在VS2013中看到这样做。我希望它是TypeScript编辑器窗口的用户关键字。
我经常使用" self"在我的代码中。有没有办法可以添加“自我”这个词。"作为关键字,并在我的TypeScript文本编辑窗口中以不同的颜色显示?
以下是我将使用self并希望突出显示的示例:
class X {
abc=1;
static $inject = ['$http'];
constructor(private $http: ng.IHttpService) {}
doTask = () => {
var self = this;
this.$http({
xx
})
.success((data) => {
self.abc = data
})
}
}
更新:
我在问题中添加了几行,以便更贴近我使用self
的方式。
答案 0 :(得分:4)
这适用于lambda:
class X {
doTask = () => {
this.doJob({
foo: "bar"
}).success((data) => {
this.abc = data;
});
}
}
汇编为:
function X() {
var _this = this;
this.doTask = function () {
_this.doJob({
foo: "bar"
}).success(function (data) {
_this.abc = data;
});
};
}
答案 1 :(得分:2)
我建议尝试使用ReSharper(http://www.jetbrains.com/resharper/)来扩展VS2013中的语法高亮选项。这是一个30天的试用期,但如果它能满足您的需求,那么我会说它值得购买。以下是扩展颜色突出显示文档的链接:
http://www.jetbrains.com/resharper/webhelp/Coding_Assistance__Syntax_Highlighting.html
从您的问题来看,您似乎只想指定另一个要突出显示的关键字,以便在代码中直观地突出显示。 ReSharper将允许您轻松完成此操作。
答案 2 :(得分:1)
这就是你的类看起来像使用方法在TypeScript中编写的属性。那么你就不需要打扰self
。
class X {
private abc: number = 1;
public doTask(): void {
this.doJob()
.success((data) => this.processData(data));
}
private processData(data: any): void {
this.abc = data.id;
}
}
答案 3 :(得分:0)
您可以修改代码示例以更好地利用TypeScript,并且无需定义self
变量。请考虑以下事项。
class X {
abc = 1;
static $inject = ['$http'];
constructor(private $http: ng.IHttpService) { }
doTask() {
this.$http({
xx
})
.success(data => {
this.abc = <number>data;
});
}
}
doTask
的主体是在函数而不是lambda中定义的。当TypeScript看到一个函数(命名或匿名)时,它将它用作内部this
引用应该应用的范围。 TypeScript通过在函数级别的.js文件中创建一个_this
变量来实现这一点,该变量反映了您想要手动创建的self
变量。
正如在外部范围内使用函数一样重要,将lambda用于成功处理程序非常重要。如果您已按照以下方式对处理程序进行编码,则会创建一个新的&#34;此范围&#34;,导致_this
无法生成。
.success(function (data) {
this.abc = <number>data; // Not desired behavior - creates a new abc variable
});