如何在打字稿和角度中定义静态常量

Jan*_*ier 7 static const typescript angular

我有一堆与业务相关的常量,我必须将它们存储在Angular中。如下所示

STUDENT_NAMES= ["JOHN","BOB","NICK"]
TEACHER_NAME = ["HARRY","CHRIS"]
 SCHOOL_CODE = [100,102,107];
Run Code Online (Sandbox Code Playgroud)

我有很多它们,它们是静态的。在我的大多数服务类中我都需要它们。存放它们的最佳地点是什么?我应该创建一个接口并让我的服务类继承它们吗?在java中,我们定义了一个公共静态最终常量类,其他类使用它们。像这样,打字稿方式是什么?

Adr*_*and 14

你将它们放在一个 TypeScript 文件中,并在需要的地方导入它们。

export const STUDENT_NAMES: string[] = ["JOHN","BOB","NICK"];
Run Code Online (Sandbox Code Playgroud)

把它放在 student-names.ts

import { STUDENT_NAMES } from './path/cosnstants/student-names';
Run Code Online (Sandbox Code Playgroud)

你需要的地方。

就个人而言,我会将它们命名为 studentNames 而不是 STUDENT_NAMES,但这是一个品味问题。


pza*_*ger 10

为常量定义一个抽象类:

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];
}
Run Code Online (Sandbox Code Playgroud)

然后在需要的地方添加此类,import { Constants } from '...';并在其中使用其值const names: string[] = Constants.STUDENT_NAMES;

关于命名我@AdrianBrand同意更愿意像现在的名字studentNamesteacherNamesschoolCodes

  • @dalcam是的,“抽象”本身确实不需要。但我喜欢无法实例化“常量”的想法。 (2认同)

Moh*_*HID 7

您可以创建一个constants.ts包含所有常量的 TS 文件:

export const constants = {
   STUDENT_NAMES: ["JOHN","BOB","NICK"],
   TEACHER_NAME: ["HARRY","CHRIS"],
   SCHOOL_CODE: [100,102,107]
};
Run Code Online (Sandbox Code Playgroud)

然后,每当您需要一个常量时,您都可以像下面的代码一样调用它:

let studentsNames : any = constants.STUDENT_NAMES;
Run Code Online (Sandbox Code Playgroud)

问候,

  • 但是,您没有显式声明常量的类型,因此它不是很打字,而且它们不是常量 - 它们可以重新分配。 (4认同)