Angular N - 声明常量文件的最佳实践是什么?

Mou*_*iri 8 typescript angular

要声明一个常量文件,我首先在与使用常量的组件相同的树级别中创建它email.constants.ts,如下所示:

export class EmailConstants {

  public static MAXIMUM_NUMBER = 10;
}
Run Code Online (Sandbox Code Playgroud)

我以这种方式从控制器导入它:

import { EmailConstants } from './emails.constants';
Run Code Online (Sandbox Code Playgroud)

这种做法好吗?我在这里问这个问题是因为我在官方指南风格中找不到答案

Ngu*_*ien 23

我会这样做:

export const MAXIMUM_NUMBER = 10;
Run Code Online (Sandbox Code Playgroud)

和

import { MAXIMUM_NUMBER } from './emails.constants';
Run Code Online (Sandbox Code Playgroud)

所以只导入你使用的东西,而不是所有的东西。

但是如果你仍然想使用一切,你可以像你所做的那样做,只是稍微改变一下:

import * as EmailConstants from './emails.constants';

Run Code Online (Sandbox Code Playgroud)

然后你仍然可以使用

EmailConstants.MAXIMUM_NUMBER
Run Code Online (Sandbox Code Playgroud)

  • 即使您可以使用 export const EmailConstants={ MAXIMUM_NUMBER:10, MINIMUN_NUMBER:1} 并从 './configuration' 导入 {EmailConstants} (2认同)

Tus*_*ade 11

为常量创建一个单独的文件是一个很好的做法。在哪里,可能有多种情况,我更喜欢/推荐以下第二种情况-

1)根据需要导出每个常量并导入;如果你没有太多的常量。

export const TEST = "testval";
export const TEST2 = "testval2";
Run Code Online (Sandbox Code Playgroud)

导入为 -

import { TEST, TEST2 } from './app.constants';
Run Code Online (Sandbox Code Playgroud)

2)如果您有太多常量并想要轻松导入,请创建并导出单个Injectable类。

所以,你的app.constants.ts将是 -

import { Injectable } from '@angular/core';

@Injectable({
    providedIn: 'root'
})
export class AppConstants {
    public TEST = "testval";
    public TEST2 = "testval2";
}
Run Code Online (Sandbox Code Playgroud)

然后,您可以简单地将它注入到您需要的类中,例如 -

constructor(private constants: AppConstants) & 用于 - constants.TEST

3)您还可以将对象导出为 -

export const constObj = {
    TEST: "testval",
    TEST2: "testval2"
};
Run Code Online (Sandbox Code Playgroud)

并将其导入为 -

import { constObj } from './app.constants'; & 用于 - constObj.TEST