ยซ   2025/02   ยป
์ผ ์›” ํ™” ์ˆ˜ ๋ชฉ ๊ธˆ ํ† 
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28
Archives
Recent Posts
02-01 21:40

Today
Total

Recent Comments
๊ด€๋ฆฌ ๋ฉ”๋‰ด

์—ฐ์˜ ๊ธฐ๋ก ๐Ÿช

[Typescript] Cannot redeclare block-scoped variable ‘OOO’ ๋ณธ๋ฌธ

WEB/Typescript

[Typescript] Cannot redeclare block-scoped variable ‘OOO’

kite707 2023. 4. 26. 00:55

์ด์ „์— ์ง„ํ–‰ํ–ˆ๋˜ ํ”„๋กœ์ ํŠธ ๋ฆฌํŒฉํ† ๋ง์„ ์ง„ํ–‰ํ•˜๋ฉฐ javascript๋กœ ์ž‘์„ฑํ–ˆ๋˜ ํŒŒ์ผ์˜ ํ™•์žฅ์ž๋ฅผ ts๋กœ ์ˆ˜์ •ํ–ˆ๋‹ค. ๊ทธ๋Ÿฌ์ž Cannot redeclare block-scoped variable ‘OOO’ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ–ˆ๋‹ค. 

 

๊ตฌ๊ธ€๋ง์„ ํ†ตํ•ด ์–ป์€ ๊ฒฐ๋ก ์€ “ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ๋Š” ํŒŒ์ผ์˜ top-level์— import๋‚˜ export๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ ํŒŒ์ผ์„ ๋ชจ๋“ˆ์ด ์•„๋‹Œ ์Šคํฌ๋ฆฝํŠธ ํŒŒ์ผ๋กœ ์ธ์‹ํ•˜๊ณ , ํŒŒ์ผ ๋‚ด์— ์„ ์–ธ๋œ ๋ณ€์ˆ˜๋Š” window, global๊ณผ ๊ฐ™์€ ์ „์—ญ ์Šค์ฝ”ํ”„์— ์˜ํ–ฅ์„ ๋ฏธ์นœ๋‹ค.” ์ด๋‹ค.

 

์ฆ‰ ์šฐ๋ฆฌ์˜ ํ˜„์žฌ ์ฝ”๋“œ์—๋Š” require๋ฌธ๋งŒ ์žˆ์–ด์„œ ๋ณ€์ˆ˜๊ฐ€ ์ „์—ญ ์Šค์ฝ”ํ”„์— ์˜ํ–ฅ์„ ๋ฏธ์ณ ๊ฐ™์€ ์ด๋ฆ„์œผ๋กœ require๋ฅผ ํ•˜๋ฉด ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค. ์ด๊ฒƒ์„ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ํŒŒ์ผ์˜ ๊ฐ€์žฅ ์•„๋ž˜์— export {}; ๋ฅผ ์ถ”๊ฐ€ํ•ด์ค˜์„œ ์ด ํŒŒ์ผ์€ ๋ชจ๋“ˆ์ž„์„ ๋ช…์‹œ์ ์œผ๋กœ ์„ ์–ธํ•ด ์ฃผ๋ฉด ๋œ๋‹ค.

์ถ”๊ฐ€์ ์œผ๋กœ ์šฐ๋ฆฌ๋Š” ์›๋ž˜ module.exports๋ฅผ ์‚ฌ์šฉํ–ˆ๋Š”๋ฐ ์ด๋ฅผ export๋กœ ๋ฐ”๊พธ๋ ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋ฐ”๊ฟ€ ์ˆ˜ ์žˆ๋‹ค.

//before, test.js
module.exports = () => {
	console.log('hihi');
};


//after,   test.js
const printHi = () => {
	console.log('hihi');
}
export { printHi }


//์œ„์™€ ๊ฐ™์ด ๋ฐ”๊พธ๋ฉด require๋ฌธ๋„ ์•„๋ž˜์™€ ๊ฐ™์ด ๋ฐ”๊ฟ”์ค˜์•ผ ํ•œ๋‹ค.
const printHi = require('test.js');  //์ด์ „

const { printHi } = require('test.ts');  //์ดํ›„
const { printHi : hihi } require('test.ts'); //๋‹ค๋ฅธ ์ด๋ฆ„์œผ๋กœ ๊ฐ€์ ธ์˜ค๊ณ  ์‹ถ์„ ๊ฒฝ์šฐ

์ด์ „์—๋Š” ๊ทธ๋ƒฅ module.exports๋ฅผ ํ•ด์ฃผ์–ด์„œ ์–ด๋–ค ์ด๋ฆ„์œผ๋กœ ๊ฐ€์ ธ์˜ค๋‚˜ ์ƒ๊ด€์ด ์—†์—ˆ์ง€๋งŒ ์ด์ œ๋Š” {}๋กœ ๊ฐ์‹ธ์„œ export ํ•ด์ฃผ์—ˆ๊ธฐ ๋•Œ๋ฌธ์— printHi๋ผ๊ณ  ํŠน์ •ํ•ด์„œ require๋ฅผ ํ•ด์•ผํ•œ๋‹ค.