Klasse Unabhängigkeitserklärung – Eigenschaft nicht vorhanden ist, die auf Art in Typoskript

Ich bin neu typescript, und zu versuchen, für ein javascript-code habe ich in Typoskript, so landete ich mit dem code unten.
Mein Verständnis in Bezug auf die Klassen in typescript ist das unten, was falsch sein kann, ist:
1. Nach der Definition der Klasse, die Sie deklarieren müssen, die Parameter verwendet werden, die später mit this die Verzögerung ist in der form variableName:variableType.
2. im Konstruktor werden die Variablen mit Werten wie this.variableName = x
3. In der methods unter der class die variable kann verwendet werden, mit this.

In den folgenden code, ich hab den Fehler [ts] Property 'escapeRegExp' does not exist on type 'typeof Listen'. wie im Bild gezeigt, befestigt.

namespace CORE{
    export class Listen{
         commandsList:[RegExp, string, string];
         debugStyle:string;
         optionalParam:RegExp;
         optionalRegex:RegExp;
         namedParam:RegExp;
         splatParam:RegExp;
         escapeRegExp:RegExp;
        constructor(){
            this.commandsList = [];
            this.debugStyle = 'font-weight: bold; color: #00f;';
            this.optionalParam = /\s*\((.*?)\)\s*/g;
            this.optionalRegex = /(\(\?:[^)]+\))\?/g;
            this.namedParam    = /(\(\?)?:\w+/g;
            this.splatParam    = /\*\w+/g;
            this.escapeRegExp  = /[\-{}\[\]+?.,\\\^$|#]/g;
        }

        public static commandToRegExp(command:string):RegExp{
            command = command.replace(this.escapeRegExp, '\\$&')
                    .replace(this.optionalParam, '(?:$1)?')
                    .replace(this.namedParam, function(match, optional) {
                        return optional ? match : '([^\\s]+)';
                    })
                    .replace(this.splatParam, '(.*?)')
                    .replace(this.optionalRegex, '\\s*$1?\\s*');

            return new RegExp('^' + command + '$', 'i');
        }

        public static registerCommand(command:RegExp, cb:string, phrase:string):void{
            this.commandsList.push({ command: command, callback: cb, originalPhrase: phrase });
        }

        public static addCommands(commands:string[]):void{
                  var cb;
                    for (var phrase in commands) {
                        if (commands.hasOwnProperty(phrase)) {
                            cb = this[commands[phrase]] || commands[phrase];
                            if (typeof cb === 'function') {
                                //convert command to regex then register the command
                                this.registerCommand(this.commandToRegExp(phrase), cb, phrase);
                            } else if (typeof cb === 'object' && cb.regexp instanceof RegExp) {
                                //register the command
                                this.registerCommand(new RegExp(cb.regexp.source, 'i'), cb.callback, phrase);
                            }
                        }
                    }
        }

        public static executeCommand(commandText:string):void{
            for (var j = 0, l = this.commandsList.length; j < l; j++) {
                var result = this.commandsList[j].command.exec(commandText);
                if (result) {
                    var parameters = result.slice(1);
                    //execute the matched command
                    this.commandsList[j].callback.apply(this, parameters);
                }
            }
        }        
    }
}

Klasse Unabhängigkeitserklärung - Eigenschaft nicht vorhanden ist, die auf Art in Typoskript



One Reply
  1. 1

    this existiert nicht auf eine statische Methode. Eine statische Methode ist nicht an die Instanz der Klasse. Es gibt eine Menge zu Lesen auf statische Methoden, aber im Grunde ist: eine Methode der Klasse aufrufen kann eine statische Methode, statische Methode nicht aufrufen, Methode einer Klasse (ohne eine Instanz.)

    Den fix hier zu entfernen static von Ihren Methoden.

    • Also, was Korrekturen soll ich tun, können Sie einige Zeilen code. Dank
    • Ich persönlich würde vorschlagen, das erlernen der Unterschied zwischen statische und Klassenmethoden, aber die schnelle Lösung zum entfernen von static von Ihren Methoden. Ich werde mein edit beantworten.
    • Die erorr also verschwunden, so dass ich ‚ ll markieren Sie Ihre Antwort als richtige Lösung, aber sieht habe ich einen anderen Fehler hier: stackoverflow.com/q/41316133/2441637

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.