如何在 Angular / Typescript 中隔离私有静态函数?

How to isolate private static functions in Angular / Typescript?

如何将 class 的 private static functions 隔离到另一个文件中。

在我的 component.ts 中,我有很多静态函数,为了更好的可读性,需要将它们放在另一个 ts 文件中。我该怎么做?

就像我们可以将接口放在另一个文件中并导出它们一样,静态函数也有类似的东西吗?

期望的结果是我可以在 component.ts 文件中调用 Component.foo(),但是 private static foo() 存在于 logic.ts 文件。可以这样做吗?

你做不到你要求的。

您可以轻松地为静态文件创建外部 class,例如:

export class Logic {
    public static foo() {
        console.log('foo');
    }
}

然后在 component.ts 中你可以调用 Logic.foo() 就好了。但是,您不能制作 foo private 因为它在 Component 中不可用。此外,当您在组件内部或其他任何地方重命名 Logic 时,即

const LogicalFunctions = Logic;
LogicalFunctions.foo();

您不能将它们作为组件的一部分进行引用,例如 Component.foo()

这取决于您想要实现的目标。

你可以有一个文件logic.ts:

export function foo(){ }

然后在您的 Component-class 中将其导入私有静态 属性 如果您不介意调用您的函数的额外步骤。

import * as Logic from './Logic'

class Component
{
    private static Logic = Logic; 

    public DoStuff() {
        Component.Logic.foo();
    }
}


Component.Logic.foo(); // Not allowed

当然任何人都可以重用 Logic.ts,但如果您使用 "private" 的目的只是为了限制 Component 的 API,这可能是一个想法。

当然,您的 foo 将无法访问组件的其他私有静态信息,但如果您需要,我看不出尝试将您的 class 分成多个文件。