У меня есть куча констант, связанных с бизнесом, и я должен хранить их в Angular.
STUDENT_NAMES= ["JOHN","BOB","NICK"]
TEACHER_NAME = ["HARRY","CHRIS"]
SCHOOL_CODE = [100,102,107];
У меня их много, и они статичны ... Они нужны мне в большинстве классов обслуживания. Как лучше всего их хранить? Должен ли я создать интерфейс и позволить моему классу обслуживания наследовать их? В java мы определяем класс общедоступных статических конечных констант, а другие классы используют их. Каков способ машинописного текста?





Вы помещаете их в файл TypeScript и импортируете при необходимости.
export const STUDENT_NAMES: string[] = ["JOHN","BOB","NICK"];
Поместите это в student-names.ts
import { STUDENT_NAMES } from './path/cosnstants/student-names';
где вам это нужно.
Лично я бы назвал их studentNames, а не STUDENT_NAMES, но это вопрос вкуса.
Вы можете создать TS-файл constants.ts, содержащий все ваши константы:
export const constants = {
STUDENT_NAMES: ["JOHN","BOB","NICK"],
TEACHER_NAME: ["HARRY","CHRIS"],
SCHOOL_CODE: [100,102,107]
};
Затем, когда вам понадобится константа, вы можете называть ее следующим образом:
let studentsNames : any = constants.STUDENT_NAMES;
С уважением,
Определите абстрактный класс для ваших констант:
export abstract class Constants {
static readonly STUDENT_NAMES: string[] = ["JOHN", "BOB", "NICK"];
static readonly TEACHER_NAME: string[] = ["HARRY", "CHRIS"];
static readonly SCHOOL_CODE: number[] = [100, 102, 107];
}
Затем включите этот класс, когда это необходимо, с import { Constants } from '...'; и используйте его значения с const names: string[] = Constants.STUDENT_NAMES;.
Что касается наименования, я согласен с @AdrianBrand, чтобы предпочесть такие имена, как studentNames, teacherNames и schoolCodes.
Редактировать: TypeScript 3.4 представил так называемый Утверждения const, который также может подойти:
export const constants = {
studentNames: ["JOHN", "BOB", "NICK"],
...
} as const;
Лучший способ создавать константы. Спасибо.
Добавьте все свои константы в файл environment.ts - это лучшая практика, и значения не будут изменены в зависимости от среды.
Добавьте как environment.ts, так и environment.prod.ts - это будет ваш глобальный объект, к которому можно будет получить доступ на любом уровне
Импорт будет таким же, как импорт интерфейса или любого класса. Спасибо - удачного кодирования
Я бы рекомендовал использовать переменные среды только для вещей, которые меняются между средами dev, test и prod, такими как конечные точки api, я бы не загрязнял их каждой константой в вашем приложении.
Затем вы можете экспортировать отдельный файл const. Файл и получить данные
вы можете попробовать перечисления, это позволит вам определить набор именованных констант. Обратитесь к этому документу.
enum Constants {
STUDENT_NAMES= ["JOHN","BOB","NICK"]
TEACHER_NAME = ["HARRY","CHRIS"]
SCHOOL_CODE = [100,102,107];
}
Но тогда вы явно не объявляете типы констант, так что это не очень типографский подход, и они не являются постоянными - их можно переназначить.