Angular – how to define static constants in typescript and angular

angularconstantsstatictypescript

I have bunch of constants which are business related and I have to store them in Angular.Something like below

STUDENT_NAMES= ["JOHN","BOB","NICK"]
TEACHER_NAME = ["HARRY","CHRIS"]
 SCHOOL_CODE = [100,102,107];

I have a lot of them and they are kind of static ..I need them in most of my service classes.
What is the best place to store them? Should i create a interface and let my service class inherit them?
In java , we define a class of public static final constants and other classes uses them.Like this , what is the typescript way?

Best Answer

Define an abstract class for your constants:

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];
}

Then include this class whereever needed with import { Constants } from '...'; and use its values with const names: string[] = Constants.STUDENT_NAMES;

Regarding the naming I agree with @AdrianBrand to prefer names like studentNames, teacherNames and schoolCodes.

Edit: TypeScript 3.4 introduced so called const assertions, which might also be suited:

export const constants = {
  studentNames: ["JOHN", "BOB", "NICK"],
  ...
} as const;