Как изолировать private static functions
класса в другой файл.
В моем component.ts
у меня много статических функций, и мне нужно поместить их в другой файл ts для лучшей читабельности. Как я могу это сделать ?
Например, мы можем поместить интерфейсы в другой файл и экспортировать их. Есть ли что-то похожее для статических функций?
Желаемый результат: я могу вызвать Component.foo()
в файле component.ts , но private static foo()
существует в файле logic.ts . Возможно ли это сделать?
2 ответа
Вы не можете делать то, что вы просите.
Вы можете легко создать внешний класс для статических файлов, таких как:
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(){ }
А затем в вашем классе компонентов импортируйте это в приватное статическое свойство, если вы не возражаете против дополнительного шага в вызове ваших функций.
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 Component
, это может быть идеей.
И, конечно, у вашего foo
не будет доступа к другой частной статистике Компонента, но если вам это нужно, я не вижу смысла пытаться разделить ваш класс на несколько файлов.
Похожие вопросы
Новые вопросы
angular
Вопросы об Angular (не путать с AngularJS), веб-фреймворке от Google. Используйте этот тег для вопросов Angular, которые не относятся к отдельной версии. Для более старой веб-инфраструктуры AngularJS (1.x) используйте тег AngularJS.