์ด์ฅ์์์ ํต์ฌ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์์ฑ์ค์ผ ๋, ์์กด์ด ํ์ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ๊ตฌํ๊ณผ ์๊ด์์ด ํ์ ๋ง ํ์ํ๋ค๋ฉด ๋ชจ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๋ถ๋ฌ์ค์ง ์๊ณ ๊ตฌ์กฐ์ ํ์ดํ์ ํ์ฉํ์ฌ ํ์ํ ๋ฉ์๋์ ์์ฑ๋ง ๋ณ๋๋ก ์์ฑํ์๋ผ๊ณ ๋๊ปด์ก๋ค.
Buffer ์์
Buffer ํ์ ์ ์์๋ก ์ดํด๋ณด์. Buffer๋ ๋ ธ๋ ๊ฐ๋ฐ์๋ฅผ ์ํ ๊ฒ์ด๋ค. Buffer ํ์ ์ ๋ถ๋ฌ์ค๊ธฐ ์ํด @types/node(NodeJS ํ์ ์ ์ธ) ๋ชจ๋์ ์ค์นํด์ผ ํ๋ค. ์ด๋ฅผ ์ค์นํ๊ฒ ๋๋ค๋ฉด ๋ค์๊ณผ ๊ฐ์ ๊ฐ๋ฐ์์๊ฒ ๋ฌธ์ ๊ฐ ์๊ธด๋ค.
1. ์๋ฐ์คํฌ๋ฆฝํธ ๊ฐ๋ฐ์: NodeJS, @types์ ๋ฌด๊ดํ๋ค.
2. ํ์ ์คํฌ๋ฆฝํธ ๊ฐ๋ฐ์: NodeJS์ ๋ฌด๊ดํ๋ค.
์ฆ, ๊ฐ์๊ฐ ์ฌ์ฉํ์ง ์๋ ๋ชจ๋์ด ํฌํจ๋์ด ์๊ธฐ ๋๋ฌธ์ ํผ๋์ค๋ฌ์ธ ๊ฒ์ด๋ค. Buffer๋ NodeJS ๊ฐ๋ฐ์์๊ฒ๋ง ํ์ํ๊ณ @types/node๋ NodeJS์ ํ์ ์คํฌ๋ฆฝํธ๋ฅผ ๋์์ ์ฌ์ฉํ๋ ๊ฐ๋ฐ์๋ง ๊ด๋ จ๋๋ค.
๋ฏธ๋ฌ๋ง ์ฌ์ฉํ๊ธฐ
์์ฑ ์ค์ธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ์์กดํ๋ ์ด๋ค ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๊ตฌํ๊ณผ ๋ฌด๊ดํ๊ฒ ํ์ ์๋ง ์์กดํ๋ค๋ฉด, ํ์ํ ์ ์ธ๋ถ๋ง ์ถ์ถํ์ฌ ์์ฑ ์ค์ธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋ฃ๋ ๊ฒ(๋ฏธ๋ฌ๋ง)์ ๊ณ ๋ คํด ๋ณด๋ ๊ฒ์ด ์ข๋ค.
์ฆ, Buffer๊ฐ ์ด๋ป๊ฒ ๊ตฌํ์ด ๋์๋์ง๊ฐ ์ค์ํ ๊ฒ์ด ์๋๋ผ, Buffer์ ํ์ ์ด ํ์ํ ์ํฉ์์ @types/node์ ์ค์นํ์ง ์๊ณ Buffer์ ํ์ ์ค ํ์ํ ๋ฉ์๋, ์์ฑ๋ง ๋ผ์ด ๋ด์ด ๋ช ์ํ ์ ์๋ค.
// Buffer ํ์
์์ ์ค์ ๋ก ํ์ํ ๋ถ๋ถ๋ง์ ๋ผ์ด ๋ด์ด ๋ช
์
type CsvBuffer = {
toString(encoding: string): string;
};
function parseCSV(contents: string | CsvBuffer): { [column: string]: string } {
if (typeof contents === 'object') {
// ๋ฒํผ์ธ ๊ฒฝ์ฐ
return parseCSV(contents.toString('utf8'));
}
// ...
return {
subject: 'abc',
};
}
parseCSV ํจ์์ ๊ฒฝ์ฐ ๋งค๊ฐ๋ณ์ contents๊ฐ Buffer์ธ ๊ฒฝ์ฐ Buffer ๊ฐ์ฒด๊ฐ ๊ฐ์ง๊ณ ์๋ toString ๋ฉ์๋๊ฐ ํ์ํ๋ค. ๊ทธ ์ธ์ ๋ค๋ฅธ ๋ฉ์๋๋ ์์ฑ์ ํ์ ์๋ค. ๋๋ฌธ์ CsvBuffer ํ์ ์ ์ดํด๋ณด๋ฉด ๋ค๋ฅธ ๊ฒ์ ์๊ณ toString ๋ฉ์๋์ ํ์ ๋ง ๋ช ์๋์ด ์๋ค.
๋จ์ง, Buffer์ toString ๋ฉ์๋์ ํ์ ๋ง ๊ฐ์ ธ์ค๊ธฐ ์ํด @types/node ๋ฅผ ์ค์นํ์ง ๋ง์.
ํ์ง๋ง ๋ค๋ฅธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ํ์ ์ ์ธ์ ๋๋ถ๋ถ์ ์ถ์ถํด์ผ ํ๋ค๋ฉด, ์ฐจ๋ผ๋ฆฌ ๋ช ์์ ์ผ๋ก @types ์์กด์ฑ์ ์ถ๊ฐํ๋ ๊ฒ์ด ์ข๋ค.
์์ฝ
1. ํ์๊ฐ ์๋ ์์กด์ฑ์ ๋ถ๋ฆฌํ ๋๋ ๊ตฌ์กฐ์ ํ์ดํ์ ์ฌ์ฉํ์.
2. ๊ณต๊ฐํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ์๋ฐ์คํฌ๋ฆฝํธ ๊ฐ๋ฐ์๊ฐ ์ฌ์ฉํ ์ ์์ผ๋ฏ๋ก @types ์์กด์ฑ์ ๊ฐ์ง์ง ์๋๋ก ํด์ผ ํ๋ค.
3. ๊ณต๊ฐํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ์น ๊ฐ๋ฐ์๊ฐ ์ฌ์ฉํ ์ ์์ผ๋ฏ๋ก NodeJS ๊ด๋ จ๋ ์์กด์ฑ์ ๊ฐ์ง์ง ์๊ฒ ํด์ผ ํ๋ค.