I have several utility functions. What is the best way to package these up, and then import them?
This is what I am trying to do:
import * as util from './util'
export class myClass{
constructor()
{
util.doSomething("test");
}
}
Then in the class:
export class Util{
doSomething(val: string){ return val;}
doSomethingElse(val: string{ return val;}
}
The error message I get from VS is "Property doSomething does not exist on type util."
Alternative way:
1) Export constants in your utils.ts file:
2) Import and use this methods in main *.ts file:
If you create a file
utils.ts
which containsthen you can simplify your client code like this:
Or you could export is as an object literal:
you can also create a util.ts class which has a function to export
now you can import the method as below, shared folder structure is src > app > shared, i am calling this import inside src > app > shelf > shelf.component.ts file
There's a couple problems here:
doSomething
is an instance methodimport * as util
,util
represents the module, not an object in it.If you want
Util
, you should just import that:Next, you should instantiate
Util
, before finally calling the method on it:Here's your code patched up:
All that said, there seems to be something odd about the way you're using your utils. This is totally personal opinion, but I wouldn't invoke methods that "do something", i.e. cause side effects, in a constructor.
Also, the methods in
Util
don't really look like they need to be in that class, since the class holds no state that they depend on. You can always export regular functions from a module. If you wrote your utils module like this:you'd be exporting your functions directly and would sidestep the instantiation hassle, and in fact your original code would work correctly as is.