백엔드 엔지니어링/Node.js

[Node]터미널에서 변수 타입, key값 리스트 뽑아보기

혜이드 2025. 8. 31. 17:12

코딩을 하다보면 내가 받아온 변수의 타입,특히 json이라면 구조를 알아야 하는 경우가 많다.

물론 아래의 경우와 같이 변수를 내가 선언한 것이라면

const name:string= “kim”

변수 타입을 바로 알 수 있다.

 

 

하우에버! 미지의 API에서 데이터를 받아왔거나,

라이브러리에서 제공하는 데이터라면 파악이 필요하다.그래야 내가 가져다 쓸 수 있기 때문..

 

참고) JSON vs 객체

더보기

json과 객체는 다른 거다.

둘다 {} 중괄호 형식에, key, value를 사용하기에 얼핏 비슷해보이지만 ..

 

상황으로 보자. 

 

1 객체 사용상황  

객체가 훨씬 더 범위가 크다.

객체는 “김혜윤” “노트북”과 같은 속성과 행동이 있는 것을 포괄한다 .

좀 더 많은 행동을 요할 때 .

 

2.Json 사용상황

로직이나 함수는 커버 못한다.

텍스트 기반으로 key value를 저장해야할때

데이터 저장

 

 

그래서 사용시 객체와 json은 상호변환을 해주어야 할 일이 꽤 많다.

// 객체를 JSON으로 변환
const obj = { name: "홍길동", age: 30 };
const jsonString = JSON.stringify(obj); // '{"name":"홍길동","age":30}'

// JSON을 객체로 변환
const parsedObj = JSON.parse(jsonString); // { name: "홍길동", age: 30 }

 

상황을 들어보자. 

어떤 미지의 API 에서 데이터를 받아왔고, 나는 그 결과값을 쓰고싶다.

// 응답이 JSON 배열이라고 가정
const data = await fetch("https://api.example.com/users")
  .then(res => res.json());

// 첫 번째 요소 확인
const firstItem = data[0];

// key 리스트 추출
console.log(Object.keys(firstItem));  
// ["id", "username", "email"]

 

 

응답

[
  {
    "id": 1,
    "username": "Yoon",
    "email": "yoon@example.com"
  }
]

 

아하.. 

이렇게 오는 구나를 파악하고 나는 이제 저 데이터에서 

이름을 username: 이라고 주는구나로 파악한 후 가져다 쓰면 된다. 

const names = data.map(item => item.username);
console.log(names);  
// ["Yoon", "혜윤"]

 

 

 

그렇다면 이렇게 코드 단위의 실행이 아닌,터미널 명령어로 바로 볼 순 없을까?

 ->있다

 

dotenv 라이브러리의 process.env객체를 예시로 들어보겠다.

 

이 라이브러리는 Secretkey 등의 개인정보를 깃헙에 올리지 않고,로컬 컴퓨터에서만 사용하고 싶을 때 사용되는 라이브러리이다.

이 라이브러리에서 제공되는 process.env를 사용하여 보안을 유지한다. 이 라이브러리에 대한 포스팅이 아니니 

그냥 예시로만 이해해주면 좋겠다. 

 

1. 타입먼저 보기

 

npm install dotenv를 했고 node에 env라이브러리가 올라와있으므로..

터미널에서 바로 typeof 명령어를 사용한다 .

npx ts-node -e "console.log(typeof process.env)"
#결과가 예쁘게 나옵니다. 

object

그치만 이렇게 Object 라고만 나오므로 ..쓸모가 없다 .

내가 필요한건 어떤 키값이 있어서 어떻게 써먹을 수 있을지인데 ?~

그래서 이 명령어보다는 요걸 쓴다 .

⇒ keys

npx ts-node -e "
console.log('process.env 키들:', Object.keys(process.env));
console.log('처음 5개 키:', Object.keys(process.env).slice(0, 5));
"

결과 짜잔 ! !

process.env 키들: [
  'TERM_PROGRAM',
  'NODE',
  'INIT_CWD',
  'TERM',
  'SHELL',
  'HOMEBREW_REPOSITORY',
  'TMPDIR',
  'npm_config_global_prefix',
  'TERM_PROGRAM_VERSION',
  'ZDOTDIR',
  'CURSOR_TRACE_ID',
  'ORIGINAL_XDG_CURRENT_DESKTOP',
  'MallocNanoZone',
  'COLOR',
  'npm_config_noproxy',
  'npm_config_local_prefix',
  'ZSH',
  'USER',
  'LS_COLORS',
  'COMMAND_MODE',
  'npm_config_globalconfig',
  'SSH_AUTH_SOCK',
  'VSCODE_PROFILE_INITIALIZED',
  '__CF_USER_TEXT_ENCODING',
  'npm_execpath',
  'PAGER',
  'LSCOLORS',
  'PATH',
  'npm_package_json',
  '_',
  'npm_config_userconfig',
  'npm_config_init_module',
  'USER_ZDOTDIR',
  '__CFBundleIdentifier',
  'npm_command',
  'PWD',
  'npm_lifecycle_event',
  'EDITOR',
  'LANG',
  'npm_config_npm_version',
  'VSCODE_GIT_ASKPASS_EXTRA_ARGS',
  'XPC_FLAGS',
  'npm_config_node_gyp',
  'XPC_SERVICE_NAME',
  'VSCODE_INJECTION',
  'SHLVL',
  'HOME',
  'VSCODE_GIT_ASKPASS_MAIN',
  'HOMEBREW_PREFIX',
  'npm_config_cache',
  'LESS',
  'LOGNAME',
  'npm_lifecycle_script',
  'VSCODE_GIT_IPC_HANDLE',
  'npm_config_user_agent',
  'VSCODE_GIT_ASKPASS_NODE',
  'GIT_ASKPASS',
  'INFOPATH',
  'HOMEBREW_CELLAR',
  'npm_node_execpath',
  'npm_config_prefix',
  'COLORTERM'
]
처음 5개 키: [ 'TERM_PROGRAM', 'NODE', 'INIT_CWD', 'TERM', 'SHELL' ]