Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
330 views
in Technique[技术] by (71.8m points)

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

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
question from:https://stackoverflow.com/questions/65557884/in-typescript-is-there-a-way-to-restrict-limit-an-exported-function-so-it-can

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)
Waitting for answers

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...