如何将用户关键字添加到VS2013 TypeScript语言文本编辑器中?

时间:2014-07-30 08:11:27

标签: javascript visual-studio visual-studio-2013 typescript

我需要添加" 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的方式。

4 个答案:

答案 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
    });