Приведите process.env к <any>с TS - PullRequest
0 голосов
/ 24 июня 2018

У меня есть пара операторов, например:

log.info('docker.r2g run routine is waiting for exit signal from the user. The container id is:', chalk.bold(process.env.r2g_container_id));
log.info('to inspect the container, use:', chalk.bold(`docker exec -it ${process.env.r2g_container_id} /bin/bash`));
log.info('to stop/kill the container, use kill, not stop:', chalk.bold(`docker kill ${process.env.r2g_container_id}`));

, когда я передаю это с tsc, я получаю следующие ошибки:

src/commands/run/run.ts(132,94): error TS2339: Property 'r2g_container_id' does not exist on type 'ProcessEnv'.

133 log.info('to stop/kill the container, use kill, not stop:', chalk.bold(`docker kill ${process.env.r2g_container_id}`));

, что является лучшим способомприведение process.env к any или еще много чего, чтобы избавиться от этих ошибок?Или, возможно, я могу расширить ProcessEnv, чтобы включить переменные env, которые я ищу?Хотя первый выглядит хорошо.

Я попробовал это:

declare global {

  namespace NodeJS {
    export interface ProcessEnv {
      r2g_container_id: string,
      docker_r2g_is_debug: string
    }
  }

}

, но это не совсем правильно.

Вот еще один вопрос, который мы могли бы отложить: использование process.env в TypeScript

Ответы [ 3 ]

0 голосов
/ 24 июня 2018

Похоже, это сработало:

declare global {

  namespace NodeJS {

    export interface ProcessEnv  {
      [key:string]: string,
      r2g_container_id: string,
      docker_r2g_is_debug: string,
      docker_r2g_fs_map: string
      HOME: string
    }

  }

}

Я не уверен, что это расширяет или переопределяет существующее определение, но в любом случае ошибки компиляции исчезли.

0 голосов
/ 24 июня 2018

Кажется, это тоже работает:

declare namespace NodeJS {
  export interface EnvironmentVariables {
    r2g_container_id: string,
    docker_r2g_is_debug: string
  }
}

Найдено здесь: https://github.com/typings/registry/issues/770

0 голосов
/ 24 июня 2018
(<any>process.env).r2g_container_id

Этого должно быть достаточно, чтобы привести к типу any

...