Hier gibt es ein paar Probleme:
- Sie instanziieren nichts und
doSomething
sind eine Instanzmethode
- Wenn Sie dies tun
import * as util
, wird util
das Modul dargestellt, kein Objekt darin.
Wenn Sie möchten Util
, sollten Sie einfach Folgendes importieren:
import { Util } from './util'
Als nächstes sollten Sie instanziieren Util
, bevor Sie die Methode darauf aufrufen:
var u = new Util();
u.doSomething("test");
Hier ist Ihr Code gepatcht:
import { Util } from './util'
export class MyClass{
constructor()
{
var u = new Util();
u.doSomething("test");
}
}
Alles in allem scheint die Art und Weise, wie Sie Ihre Utensilien verwenden, etwas Seltsames zu sein. Dies ist eine ganz persönliche Meinung, aber ich würde keine Methoden aufrufen, die in einem Konstruktor "etwas tun", dh Nebenwirkungen verursachen.
Außerdem sehen die Methoden in Util
nicht wirklich so aus, als müssten sie in dieser Klasse sein, da die Klasse keinen Status hat, von dem sie abhängen. Sie können jederzeit reguläre Funktionen aus einem Modul exportieren. Wenn Sie Ihr Utils-Modul folgendermaßen geschrieben haben:
export function doSomething(val: string) { return val; }
export function doSomethingElse(val: string) { return val; }
Sie würden Ihre Funktionen direkt exportieren und den Instanziierungsaufwand umgehen, und tatsächlich würde Ihr ursprünglicher Code so wie er ist korrekt funktionieren.