Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/433.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 更新和导入动态常量_Javascript_Typescript - Fatal编程技术网

Javascript 更新和导入动态常量

Javascript 更新和导入动态常量,javascript,typescript,Javascript,Typescript,我有一个定义常量的文件,其中包含当前年份。为了避免每年都更新代码,我让它们变得动态。常数可以通过年份下拉列表进行更新。当用户单击新的一年时,所有常量都应使用该年 它们当前在导出的常量文件中的使用方式: export const someConstants={ 2018年的固定值:{ url:CONSTANT_BASE_url+“更多信息-2018”, 其他信息:{ 超级常量值:“1” } } } 然后通过 从“./utils/constants”导入{someConstants}; conso

我有一个定义常量的文件,其中包含当前年份。为了避免每年都更新代码,我让它们变得动态。常数可以通过年份下拉列表进行更新。当用户单击新的一年时,所有常量都应使用该年

它们当前在导出的常量文件中的使用方式:

export const someConstants={
2018年的固定值:{
url:CONSTANT_BASE_url+“更多信息-2018”,
其他信息:{
超级常量值:“1”
}
}
}
然后通过

从“./utils/constants”导入{someConstants};
console.log(someConstants.constants\u ONE\u FOR\u YEAR\u 2018.url);
我在想有几种方法,比如将某些常量更改为接受日期的函数,但这需要每次传入一个日期

export const someConstants=(年)=>{
2018年的固定值:{
url:CONSTANT_BASE_url+`more info-${year}`,
其他信息:{
超级常量值:“1”
}
}
}
或使用类:

export default class constants {
  private _year: number = 2019;
  private CONSTANT_BASE_URL: string = "https://";
  set year(value: number) {
      this._year = value;
  }

  constantsWithYear = () => {
    return { 
      CONSTANT_ONE_FOR_YEAR_2018: {
      url: this.CONSTANT_BASE_URL + `more-info-${this._year}`,
      otherInfo: {
        SUPER_CONSTANT_VALUE: "1"
      }
    }
  }
}
但要设置和访问它,您需要具有相同的类实例


我意识到技术上常量不应该是动态的,但如何在整个项目中使用的常量中添加动态年份?

常量是只读的,因此以后不能修改它们。 您可以使用法线变量并使其如下所示:

`var someConstants = {
  CONSTANT_ONE_FOR_YEAR_2018: {
    url: CONSTANT_BASE_URL + "more-info-"+new Date().getFullYear(),
    otherInfo: {
      SUPER_CONSTANT_VALUE: "1"
    }
  }
}
`

关键字const使其无法重新定义,但实际上您可以编辑对象。更改为var不会改变任何事情<代码>常量foo={a:'b'};foo.a='c';console.log(foo.a);//c所以你可以使用你的第二个选择,但只需做一些更改,导入const someConstants=(new Date().getFullYear())=>{CONSTANT\u ONE\u FOR_YEAR\u 2018:{url:CONSTANT\u BASE\u url+
更多信息-${YEAR}
,其他信息:{SUPER\u CONSTANT\u VALUE:“1”}