كيفية تعريف الثوابت الساكنة في تايبسكريبت وأنغولار


لدي مجموعة من الثوابت المتعلقة بالأعمال ويجب علي تخزينها في Angular. شيء مثل ما يلي

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

لدي الكثير منها وهي نوعًا ما ثابتة.. أحتاجها في معظم فئات الخدمة الخاصة بي. ما أفضل مكان لتخزينها؟ هل يجب أن أنشئ واجهة وأسمح لفئة الخدمة الخاصة بي بأن ترثها؟ في جافا، نحدد فئة تحتوي على ثوابت public static final وتستخدمها الفئات الأخرى. مثل هذا، ما هي الطريقة في تايبسكريبت؟

الإجابة رقم 1

عرف فئة مجردة للثوابت الخاصة بك:

export abstract class Constants {
  static readonly STUDENT_NAMES = ["JOHN", "BOB", "NICK"];
  static readonly TEACHER_NAME = ["HARRY", "CHRIS"];
  static readonly SCHOOL_CODE = [100, 102, 107];
}

(تعديل: أنواع string[] و number[] يتم استنتاجها بواسطة TS)

ثم قم بتضمين هذه الفئة في أي مكان تحتاجه باستخدام 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;

الإجابة رقم 2

تضعهم في ملف TypeScript وتستوردهم حيثما دعت الحاجة.

export const STUDENT_NAMES: string[] = ["JOHN","BOB","NICK"];

ضعه في student-names.ts

import { STUDENT_NAMES } from './path/cosnstants/student-names';

أينما تحتاجه.

شخصياً، سأُسميهم studentNames وليس STUDENT_NAMES، لكن هذا مسألة ذوق.

الإجابة رقم 3

يمكنك إنشاء ملف 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;

مع خالص التحية,