In Typescript is there a way to restrict / limit an exported function so it can only be imported by certain files?

Viewed 775

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
0 Answers
Related