Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/8.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
如何在TypeScript中注入枚举?_Typescript - Fatal编程技术网

如何在TypeScript中注入枚举?

如何在TypeScript中注入枚举?,typescript,Typescript,如何在TypeScript中注入枚举?这是可能的和推荐的吗 enums.ts: export enum Environment { Development = 'Development', Production = 'Production', Test = 'Test' } 文件: 我得到: application/libs/config/index.ts:23:18 - error TS2749: 'Environment' refers to a value, bu

如何在TypeScript中注入枚举?这是可能的和推荐的吗

enums.ts:

export enum Environment {
    Development = 'Development',
    Production = 'Production',
    Test = 'Test'
}
文件:

我得到:

application/libs/config/index.ts:23:18 - error TS2749: 'Environment' refers to a value, but is being used as a type here.

23     Environment: Environment = _Environment
这个很好用

function myfunc(Environment: _Environment): void {}
但是,如果您想使用默认参数,可以尝试以下方法

function myfunc(Environment: _Environment = _Environment.Development): void {}
是一种联合/变体类型。这意味着它定义了一组可能的值,但本身不是一个值。您的函数有一个类型为
Environment
的参数,这意味着您可以指定枚举
Environment
中存在的一个可能值,但不能像您尝试的那样枚举本身,因为
Environment
本身不是一个值,而是一个类型

function myfunc(Environment: Environment = _Environment.Production ): void {}
如您所见,我正在从枚举中的可能值中任意选择一个

您可以查看带有静态结构表示的联合上的枚举。这意味着:

type T = 'a' | 'b';
enum TEnum {
  a = 'a'
  b = 'b'
}

// using
const a: T = 'a' // direct setting the value
const b: TEnum = TEnum.b // using existing enum structure to set the value


你会这样做的。正在开发的默认环境

export enum Environment {
    Development = 'Development',
    Production = 'Production',
    Test = 'Test'
}

function myfunc(e: Environment = Environment.Development): void {}

什么是
环境
类型?您已经键入了函数的参数,其类型为
Environment
。这是一种类型吗?关于:
env:typeof Environment=\u Environment
?请看:@c_ogo啊,这样我就可以定义枚举可以使用的类型了?不清楚你在问什么。如果您想用默认值定义
Environment
类型的参数,它将是
函数myfunc(Environment:Environment=Environment.Development):void{}
。无需将别名(
定义为_Environment
)我正在尝试使用javascriptAh中的默认参数。这是有道理的。你知道怎样用枚举创建一个纯函数吗?嗨,卡尔。我不完全明白你的问题。枚举是常量,如果在函数中使用它,它仍然是纯的。它具有环境依赖性,但在此环境中仍然是引用透明的。可以在任何纯函数中随意使用枚举。
export enum Environment {
    Development = 'Development',
    Production = 'Production',
    Test = 'Test'
}

function myfunc(e: Environment = Environment.Development): void {}