I want developers to use a class / interface instead of importing functions directly.
Is there a way to limit so only the class can import the function?
I don't want to have to put all the functions in a single file as it's not scalable in a large project
i.e. I don't want to use this pattern:
// myclass.ts
// no exports on the functions
function foo(){ ... }
function bar(){ ... }
export class MyClass {
Foo(){ return foo() }
Bar(){ return bar() }
}
What I'm trying to achieve:
// foo.ts
export function foo(){ ... }
// I want this to be private but it needs to be exported so the class below can use it
// bar.ts
export function bar() { ... }
// myclass.ts
import { foo } from 'foo';
import { bar } from 'bar';
export class MyClass {
Foo(){ return foo() }
Bar(){ return bar() }
}
// anyotherfile.ts
import { foo } from 'foo' // Stop from importing directly
import { MyClass } from 'myclass' // use this instead
my-class-foo.ts
, and put it in a directory with the class. That gives a pretty good clue that importing that file directly is never what you want, unless you are in a file that concerns itself with actually implementingMyClass
. – Howesimport forced
clause would be very handful to allow to import not explicit exported functions. – Funkhouser