Typescript 类型为'的参数;环境类型';不可分配给类型为';环境';

Typescript 类型为'的参数;环境类型';不可分配给类型为';环境';,typescript,Typescript,代码: 获取错误: enum Environment { Production = 'production', Development = 'development', Test = 'test' } export class Config { public constructor(EnvProd: Environment = Environment.Production, EnvEnum = Environment) { Config.crea

代码:

获取错误:

enum Environment {
    Production = 'production',
    Development = 'development',
    Test = 'test'
}

export class Config {
    public constructor(EnvProd: Environment = Environment.Production, EnvEnum = Environment) {
        Config.createConsoleLog(EnvProd, EnvEnum, console);
    }

    private static createConsoleLog(EnvProd: Environment, EnvEnum: Environment, console: Console): void {
        console.log(EnvProd, EnvEnum);
    }
}

我一直在试图弄清楚为什么我不能让它工作。

目前,您正在将整个枚举对象发送到预期的枚举值处,因此出现了错误


如果要允许传递“枚举对象”,则签名应为:

karlm@karl-Dell-Precision-M3800:~/dev/sg$ npx ts-node application/libs/config/index.ts 
⨯ Unable to compile TypeScript:
application/libs/config/index.ts:9:42 - error TS2345: Argument of type 'typeof Environment' is not assignable to parameter of type 'Environment'.

9         Config.createConsoleLog(EnvProd, EnvEnum, console);
                                           ~~~~~~~

注意
环境的类型
(枚举对象也是值)

您想做什么?当前,您发送的是整个enum对象,其中包含预期的enum值,因此会出现错误如果出于任何原因希望允许传递“enum对象”,则签名应为
createConsoleLog(EnvProd:Environment,EnvEnum:typeof Environment,console:console):void
@AlekseyL。啊,我明白了!发布一个答案,我将欣然接受!你能分享一下这个用例吗?(只是好奇)@AlekseyL。将一些内容重写为纯函数,因此所有内容都需要经过参数,还需要引入默认参数!仅此而已!目前还不太习惯打字。
private static createConsoleLog(EnvProd: Environment, EnvEnum: typeof Environment, console: Console): void