Там есть пара проблем здесь:
- Вы не инстанцировании ничего, а
doSomething
является методом экземпляра
- Когда вы
import * as util
, util
представляет собой модуль, а не объект в нем.
Если вы хотите Util
, вы должны просто импортировать, что:
import { Util } from './util'
Далее, вы должны создать экземпляр Util
, прежде чем, наконец, вызывая метод на нем:
var u = new Util();
u.doSomething("test");
Вот исправлен код до:
import { Util } from './util'
export class MyClass{
constructor()
{
var u = new Util();
u.doSomething("test");
}
}
Все, что сказано, кажется, что-то странное в том, как вы используете свои утилиты. Это полностью личное мнение, но я бы не вызывал методы, которые «что-то делают», т. Е. Вызывают побочные эффекты, в конструкторе.
Кроме того, методы в Util
не выглядят так, как будто они должны быть в этом классе, поскольку класс не содержит состояния, от которого они зависят. Вы всегда можете экспортировать регулярные функции из модуля. Если вы написали свой Utils модуль вроде этого:
export function doSomething(val: string) { return val; }
export function doSomethingElse(val: string) { return val; }
вы бы экспортировать свои функции непосредственно и будет обходить стороной инстанциации хлопот, а на самом деле ваш исходный код будет работать правильно, как это.
Так я и предпочитаю делать это сейчас. –
Должны ли методы быть статическими? Невозможно создать экземпляр класса Utils? – user728630
@GregGum Обертка ваших функций без гражданства в классе просто для этого - плохая идея, потому что она нарушает методы оптимизации модулей, такие как дребезжание. Вы должны экспортировать все как можно ближе к верхнему уровню модуля. –