it-swarm.com.de

Zugriff auf statische Methoden in TypeScript

Ich versuche dies zu tun, aber es funktioniert nicht so, wie ich es erwartet hätte.

(Ich benutze die AMD Option)

//logger.ts
export class Logger {

    static log(message: string) {
        //do stuff
    }
}

//main.ts
import logger = module('services/logger');
logger.log("test"); //The property 'log' does not exist on value of type '"logger"'
logger.Logger.log(); //works

Wie machst du logger.log ()?

59
Kal_Torak

Sie können Klassen direkt importieren, sodass Sie die gewünschte Verwendung haben.

// usage
import { Logger } from 'path/logger.ts'
Logger.Log();

Und die Definition bleibt gleich.

// path/logger.ts
export class Logger {

    static Log() {
        ...
    }
}
148
Dimitris

Diese Antwort war zum Zeitpunkt der Veröffentlichung korrekt. Es ist jetzt veraltet. Siehe Dimitris 'Antwort für eine bessere aktuelle Lösung.

Mit einer Klasse kannst du nicht. Sie müssen immer {module}.{class}.{function} Anrufen.

Sie können die Klasse aber auch komplett löschen und einfach {module}.{function} Aufrufen:

// services/logger.ts
export function log(message:string){
 // do stuff
}

//main.ts
import logger = module('services/logger');
logger.log("test"); // Should work
12
Jude Fisher