Typescript: ๊ฐ€์ ธ ์˜ค๊ธฐ์—†์ด ์™ธ๋ถ€ ๋ชจ๋“ˆ ์œ ํ˜•์œผ๋กœ ๋ณ€์ˆ˜ ์„ ์–ธ

์— ๋งŒ๋“  2015๋…„ 09์›” 08์ผ  ยท  3์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: microsoft/TypeScript

์•ˆ๋…•,

์™ธ๋ถ€ (commonjs) ๋ชจ๋“ˆ "A"๋ฅผ ์ž‘์„ฑํ•œ ๋‹ค์Œ ๋‹ค๋ฅธ ๋ชจ๋“ˆ "B"์˜ ์ฝ”๋“œ์—์„œ ๋ชจ๋“ˆ "A"๋ฅผ ์š”๊ตฌํ•˜๋Š” import๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  ๋ณ€์ˆ˜๋ฅผ ๋ชจ๋“ˆ "A"์œ ํ˜•์œผ๋กœ ์„ ์–ธ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

์ด ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋ ค๋Š” ์ด์œ ๋Š” ๋ชจ๋“ˆ "A"๊ฐ€ ์‹ฑ๊ธ€ ํ†ค์ด๋˜๊ธฐ๋ฅผ ์›ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ชจ๋“ˆ "A"์— ๋Œ€ํ•œ ์ฐธ์กฐ๋ฅผ ๋‹ค๋ฅธ ๋ชจ๋“ˆ "B"์˜ ํด๋ž˜์Šค ์ƒ์„ฑ์ž์— ์ „๋‹ฌํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋งˆ์น˜ "A"๋ชจ๋“ˆ์ด import A = require ( "A")๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ€์ ธ์˜จ ๊ฒƒ์ฒ˜๋Ÿผ ์ƒ์„ฑ์ž์— "A"๋ชจ๋“ˆ์˜ ์ธ์ˆ˜๋ฅผ ์ž…๋ ฅํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

๋‚ด๊ฐ€ ์‹ฑ๊ธ€ ํ†ค ๋ชจ๋“ˆ์„ ์›ํ•˜๋Š” ์ด์œ ๋Š”์ด ๋ชจ๋“ˆ์ด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์—ฐ๊ฒฐ ๋“ฑ์„ ๊ด€๋ฆฌํ•˜๋Š” ํด๋ž˜์Šค์˜ ์ธ์Šคํ„ด์Šค๋ฅผ ํฌํ•จ ํ•  ์ˆ˜ ์žˆ๊ณ , ๊ฐ€์ ธ์˜ฌ ๋•Œ๋งˆ๋‹ค ๋‹ค์‹œ ์ดˆ๊ธฐํ™”ํ•˜๋Š” ๊ฒƒ์„ ์›ํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ๋‚˜๋Š” ์ž ์žฌ์  ์ธ "๋…ธ๋“œ ๋ชจ๋“ˆ ์บ์‹œ"๋งˆ๋ฒ•์— ์˜์กดํ•˜๊ธฐ๋ณด๋‹ค๋Š” ๊ทธ๊ฒƒ๋“ค์„ ์ „๋‹ฌํ•  ์ˆ˜ ์žˆ๊ธฐ๋ฅผ ์›ํ•ฉ๋‹ˆ๋‹ค.

์ด๋ฅผ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ์Šต๋‹ˆ๊นŒ? ๋‚ด๊ฐ€ ์›ํ•˜๋Š” ๊ฒƒ์„ ๋‹ฌ์„ฑ ํ•  ์ˆ˜์žˆ๋Š” ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•์„ ์ƒ๊ฐํ–ˆ์ง€๋งŒ ๊ฐ€๋Šฅํ•˜๋‹ค๋ฉด ์ด๊ฒƒ์€ ๊ฐ€์žฅ ๋‹จ์ˆœํ•œ ๋Š๋‚Œ์ž…๋‹ˆ๋‹ค.

Question

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

๊ฐ’ ์œ„์น˜์—์„œ ์‚ฌ์šฉ๋˜์ง€ ์•Š์œผ๋ฉด ๋ชจ๋“ˆ ๊ฐ€์ ธ ์˜ค๊ธฐ๊ฐ€ ์ œ๊ฑฐ๋ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ A ๋ชจ๋“ˆ ๊ฐ€์ ธ ์˜ค๊ธฐ๊ฐ€ ์œ ํ˜• ์œ„์น˜์—์„œ๋งŒ ์‚ฌ์šฉ๋˜๋Š” ๊ฒฝ์šฐ require ํ˜ธ์ถœ์ด ์ž‘์„ฑ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค๋ฉด :

// B.ts
import s = require("./A");
var x: typeof s;

๋ฐฉ์ถœ

var x;

์ด๊ฒƒ์ด ๊ท€ํ•˜์˜ ์งˆ๋ฌธ์— ๋Œ€๋‹ตํ•ฉ๋‹ˆ๊นŒ?

๋ชจ๋“  3 ๋Œ“๊ธ€

๊ฐ’ ์œ„์น˜์—์„œ ์‚ฌ์šฉ๋˜์ง€ ์•Š์œผ๋ฉด ๋ชจ๋“ˆ ๊ฐ€์ ธ ์˜ค๊ธฐ๊ฐ€ ์ œ๊ฑฐ๋ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ A ๋ชจ๋“ˆ ๊ฐ€์ ธ ์˜ค๊ธฐ๊ฐ€ ์œ ํ˜• ์œ„์น˜์—์„œ๋งŒ ์‚ฌ์šฉ๋˜๋Š” ๊ฒฝ์šฐ require ํ˜ธ์ถœ์ด ์ž‘์„ฑ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค๋ฉด :

// B.ts
import s = require("./A");
var x: typeof s;

๋ฐฉ์ถœ

var x;

์ด๊ฒƒ์ด ๊ท€ํ•˜์˜ ์งˆ๋ฌธ์— ๋Œ€๋‹ตํ•ฉ๋‹ˆ๊นŒ?

์˜ค, ํ›Œ๋ฅญํ•ฉ๋‹ˆ๋‹ค! ๊ทธ๊ฒƒ์€ ๋‚ด ์งˆ๋ฌธ์— ํ™•์‹คํžˆ ๋Œ€๋‹ตํ•ฉ๋‹ˆ๋‹ค. ๋ฌธ์„œ์—์„œ ์ฐพ์„ ์ˆ˜ ์—†์œผ๋ฏ€๋กœ ๋„์›€์„ ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. :)

์•ˆ๋…• ์—ฌ๋Ÿฌ๋ถ„,
๊ฐ™์€ ์ค„์—์žˆ๋Š” ์งˆ๋ฌธ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์œ„์˜ ์†”๋ฃจ์…˜์„ ์‹œ๋„ํ–ˆ์ง€๋งŒ ์ด์ œ๋Š” ์ž‘๋™ํ–ˆ์Šต๋‹ˆ๋‹ค.
webpack ๋ชจ๋“ˆ์—์„œ ํด๋ž˜์Šค๋ฅผ ๊ฐ€์ ธ์˜ค๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. parent import {A, B} from "parent";
์ด ํด๋ž˜์Šค์— ๋Œ€ํ•œ ์ƒ์„ฑ์ž๋ฅผ ํ˜ธ์ถœํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” const a = A ({data : 1}); ์ปดํŒŒ์ผ์‹œ TS ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๊ทธ๊ฒƒ์€ ๋Ÿฐํƒ€์ž„ ์ž๋ฐ” ์Šคํฌ๋ฆฝํŠธ์—์„œ``์œ ํ˜• ์˜ค๋ฅ˜ A๋Š” ์ƒ์„ฑ์ž๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค.

์‚ฌ์šฉ์ž ์ง€์ • ํ˜•์‹์„ ๋งŒ๋“ค๊ณ  devDependancies์— ์ถ”๊ฐ€ํ•ด์•ผํ•ฉ๋‹ˆ๊นŒ? ์•„๋‹ˆ๋ฉด ๋‚ด๋ณด๋‚ด๊ธฐ ๊ธฐ๋ณธ๊ฐ’๊ณผ ๊ฐ™์€ ๋‚ด "๋ถ€๋ชจ"๋ชจ๋“ˆ์„ ๋‚ด๋ณด๋‚ด๋Š” ํŠน์ • ๋ฐฉ๋ฒ•์ด ์žˆ์Šต๋‹ˆ๊นŒ?

๋„์›€์„ ์ฃผ์‹œ๋ฉด ๊ฐ์‚ฌํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

๊ฑด๋ฐฐ,
Sudeep

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰

๊ด€๋ จ ๋ฌธ์ œ

fwanicka picture fwanicka  ยท  3์ฝ”๋ฉ˜ํŠธ

blendsdk picture blendsdk  ยท  3์ฝ”๋ฉ˜ํŠธ

jbondc picture jbondc  ยท  3์ฝ”๋ฉ˜ํŠธ

DanielRosenwasser picture DanielRosenwasser  ยท  3์ฝ”๋ฉ˜ํŠธ

dlaberge picture dlaberge  ยท  3์ฝ”๋ฉ˜ํŠธ