Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Angular/Typescript中隔离私有静态函数?_Angular_Typescript_Angular Cli - Fatal编程技术网

如何在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();

您不能将它们作为组件的一部分引用,la
Component.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如果您对类太大有问题,您可能会给类太多的责任?