如何在typescript和angular中定义静态常量

yqyhoc1h  于 2022-12-01  发布在  TypeScript
关注(0)|答案(5)|浏览(239)

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

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

我有很多的,而且它们都是静态的。我的大多数服务类都需要它们。存储它们的最佳位置是什么?我应该创建一个接口,让我的服务类继承它们吗?在java中,我们定义了一个public static final常量类,其他类使用它们。像这样,什么是typescript方式?

mzillmmw

mzillmmw1#

为常量定义抽象类:

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

(Edit:类型string[]number[]由TS推断)
然后在需要import { Constants } from '...';的任何地方包含此类,并将其值用于const names: string[] = Constants.STUDENT_NAMES;
关于命名,我同意@AdrianBrand更喜欢studentNamesteacherNamesschoolCodes等名称。

**编辑:**TypeScript 3.4引入了所谓的constAssert,它也可能适合:

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

nnsrf1az2#

您可以将它们放在TypeScript文件中,然后将它们导入到需要的位置。

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

把它放在学生姓名.ts中

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

在您需要的地方。
就我个人而言,我会把它们命名为studentNames,而不是STUDENT_NAMES,但这是一个品味的问题。

guicsvcw

guicsvcw3#

您可以创建一个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;

此致!

km0tfn4u

km0tfn4u4#

您可以尝试使用枚举,这将允许您定义一组命名常量。Refer to this document.

enum Constants {
    STUDENT_NAMES= ["JOHN","BOB","NICK"]
    TEACHER_NAME = ["HARRY","CHRIS"]
    SCHOOL_CODE = [100,102,107];
}
iq3niunx

iq3niunx5#

将所有常量添加到environment.ts文件中-这是最佳做法,并且不会根据环境特定的
environment.tsenvironment.prod.ts中添加-这将是您的全局对象,可以在任何级别访问
导入将与导入接口或任何类相同谢谢-编码愉快

相关问题