【问题标题】:how to define static constants in typescript and angular如何在打字稿和角度定义静态常量
【发布时间】:2019-04-09 08:32:22
【问题描述】:

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

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

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

【问题讨论】:

    标签: angular typescript static constants


    【解决方案1】:

    为你的常量定义一个抽象类:

    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 更喜欢studentNamesteacherNamesschoolCodes 之类的名称。

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

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

    【讨论】:

    • 创建常量的最佳方式。谢谢。
    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

      environment.ts 文件中添加所有常量 - 这是最佳做法,并且不会根据特定环境更改值

      同时添加environment.tsenvironment.prod.ts - 这将是您的全局对象,可以在任何级别访问

      导入将与导入接口或任何类相同 谢谢 - 快乐编码

      【讨论】:

      • 我只建议在开发、测试和生产环境(如 api 端点)之间发生变化的情况下使用环境变量,我不会用应用程序中的每个常量来污染它。
      • 然后你可以导出一个单独的常量。归档并获取数据
      【解决方案4】:

      您可以创建一个包含所有常量的 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;
      

      问候,

      【讨论】:

      • 但是你没有明确声明常量的类型,所以它不是很打字,它们也不是常量 - 它们可以重新分配。
      【解决方案5】:

      您将它们放在 TypeScript 文件中并在需要的地方导入它们。

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

      放在 student-names.ts 中

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

      你需要它的地方。

      我个人会将它们命名为 studentNames 而不是 STUDENT_NAMES,但这只是个人喜好问题。

      【讨论】:

        猜你喜欢
        • 2018-10-18
        • 1970-01-01
        • 1970-01-01
        • 2019-01-23
        • 2013-08-16
        • 2019-03-28
        • 1970-01-01
        • 2016-01-20
        • 1970-01-01
        相关资源
        最近更新 更多