Здесь есть пара проблем:
- Вы ничего не создаете, а
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; }
вы бы экспортировали свои функции напрямую и обошли бы проблемы с созданием экземпляров, и на самом деле ваш исходный код будет работать правильно как есть.
person
Asad Saeeduddin
schedule
25.09.2015