아무 세팅없이 process.env를 사용하면 그 타입은 string|undefined이다. 타입스크립트가 실제로 그 환경 변수가 있는지 알 수 없기 떄문이다. 그래서 타입에러가 가끔 발생한다.

1
2
3
4
5
6
7
8
const dynamoDBClient = new DynamoDBClient({
endpoint: process.env.DYNAMO_ENDPOINT,
region: process.env.REGION,
credentials: {
accessKeyId: process.env.ACCESS_KEY,
secretAccessKey: process.env.SECRET_ACCESS_KEY,
},
})

이렇게 작성할 경우 DynmoDBClient 생성자 파라미터 옵션이 모두 string으로 되어있기 때문에 타입에러가 발생한다.

TS2322: Type ‘string | undefined’ is not assignable to type ‘string’.   Type ‘undefined’ is not assignable to type ‘string’.

해결하기 위해서는 definition 파일을 작성하여 해당 변수가 string이라는 것을 타입 시스템에 알려주면 된다.

1
2
3
4
5
6
7
8
declare namespace NodeJS {
interface ProcessEnv {
DYNAMO_ENDPOINT: string;
REGION: string;
ACCESS_KEY: string;
SECRET_ACCESS_KEY: string;
}
}

파일을 저장하면 이제 process.env만 입력해도 자동완성이 가능하고 더 이상 에러가 발생하지 않는다.