【问题标题】:Invalid typescript?无效的打字稿?
【发布时间】:2012-11-24 16:31:14
【问题描述】:

我不明白为什么这个函数认为) 从末尾丢失了。当我放置 ) 时,它会创建一个自执行函数并生成 不是我想要的 javascript。

作品

this.Events.off = (): any {
    var events = arguments[0],
        callback = arguments[1];
    if (typeof events === 'string' && typeof callback === 'function') {
        this._events.off.call(this._events, events, callback);
    }
    else if (typeof callback === 'function') {
        this._events.off.call(this._events, callback);
    }
};

错误

declare var $, Backbone;

export class WebControls {

    _events;
    Events;

    constructor (options? ) {

        this._events = $.extend({}, Backbone.Events);

        this.Events = {};

        this.Events.on = (events: string, cb: (event: any) => any) {
            this._events.on.apply(this._events, arguments);
        };

        this.Events.trigger = (eventName: string, ...args: any[]): any {
            this._events.trigger.apply(this._events, arguments);
        };

        this.Events.off = (events?: string, callback?: any) : any {
            if (typeof events === 'string' && typeof callback === 'function') {
                this._events.off.call(this._events, events, callback);
            } else if (typeof callback === 'function') {
                this._events.off.call(this._events, callback);
            }
        };
    }

}

我是否在这里盲目地遗漏了一些明显的东西?

【问题讨论】:

  • 在 TypeScript 操场上工作得很好......它之前是什么? (或者那不一定是相同的 TypeScript 版本或什么?)
  • 您发布的代码有callback?: any。屏幕截图代码有callback?: (event: any) => any 虽然两者对我来说都是正确的,但它们是不同的。很难说我们还缺少什么。
  • 也许未发布的代码中有一个不匹配的(
  • @JanDvorak 我已经更新了帖子。你可以把它贴在操场上,没有曲线。但是,我在 VS2012 中使用 0.8.0.0 创建了一个新的打字稿文件,但它出错了。
  • 你想要什么?如果这不是您的代码当前所说的代码,那么我们无法从所述代码中确定它,就像您的解释器无法确定的那样。我们可以用人类的直觉来猜测,但是……

标签: javascript typescript


【解决方案1】:

在截图代码中,你需要一个'function'关键字或参数列表后面的粗箭头。

【讨论】:

  • 可以不使用function关键字发布有效代码sn-p吗?
  • 我最初确实尝试使用 function 关键字,但是当它这样做时,它会破坏 this 的正确上下文。 i.imgur.com/v5XN7.png - 注意在其他方法中如何使用_this,但是当使用功能键盘时,它使用普通的this
  • 请考虑使用 gist gist.github.com 或类似服务来分享人们可以实际使用的文本,而不是屏幕截图。
  • @ryan 如果 function 关键字破坏了您的词法范围(即 this),请使用 Ryan C 建议的粗箭头语法:()=> {}
  • 我似乎无法正确使用语法。 this.Events.off = (events?: string, callback?: (event: any) => any) : any => { ?
猜你喜欢
  • 2017-10-10
  • 1970-01-01
  • 1970-01-01
  • 2020-11-30
  • 1970-01-01
  • 2019-12-13
  • 1970-01-01
  • 2016-06-29
  • 1970-01-01
相关资源
最近更新 更多