如何在Angular/Typescript中隔离私有静态函数?
如何将类的如何在Angular/Typescript中隔离私有静态函数?,angular,typescript,angular-cli,Angular,Typescript,Angular Cli,如何将类的私有静态函数隔离到另一个文件中 在我的component.ts中,我有很多静态函数,需要将它们放在另一个ts文件中,以提高可读性。我该怎么做 就像我们可以将接口放在另一个文件中并导出它们一样,静态函数也有类似的功能吗 理想的结果是我能够在Component.ts文件中调用Component.foo(),但是私有静态foo()存在于logic.ts文件中。有可能吗?你不能按你的要求去做 您可以轻松地为静态文件创建外部类,如: export class Logic { public
私有静态函数
隔离到另一个文件中
在我的component.ts
中,我有很多静态函数,需要将它们放在另一个ts文件中,以提高可读性。我该怎么做
就像我们可以将接口放在另一个文件中并导出它们一样,静态函数也有类似的功能吗
理想的结果是我能够在Component.ts文件中调用
Component.foo()
,但是私有静态foo()
存在于logic.ts文件中。有可能吗?你不能按你的要求去做
您可以轻松地为静态文件创建外部类,如:
export class Logic {
public static foo() {
console.log('foo');
}
}
然后在component.ts
中可以调用Logic.foo()。但是,您不能将foo设为private
,因为这样它在组件中不可用。此外,当您在组件内部或任何其他地方重命名逻辑时,即
const LogicalFunctions = Logic;
LogicalFunctions.foo();
您不能将它们作为组件的一部分引用,laComponent.foo()
这取决于您想要实现什么
您可以有一个文件logic.ts:
export function foo(){ }
然后在组件类中将其导入到私有静态属性中,如果您不介意在调用函数时多做一步的话
import * as Logic from './Logic'
class Component
{
private static Logic = Logic;
public DoStuff() {
Component.Logic.foo();
}
}
Component.Logic.foo(); // Not allowed
当然,任何人都可以重用Logic.ts,但是如果您使用“private”的目的只是限制组件的API,那么这可能是一个好主意
当然,您的foo
将无法访问组件的其他私有静态信息,但如果您需要,我看不出尝试将类划分为多个文件的意义。@dota2pro是的!我确实想指出,在component.ts文件中重命名Logic
没有什么意义。标准做法是将类名更改为您真正想要的名称,然后在组件中以这种方式导入并引用它。
@dota2pro如果您对类太大有问题,您可能会给类太多的责任?