Definitelytyped: webpack-env.d.tsλŠ” node.d.ts둜 μ»΄νŒŒμΌλ˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

에 λ§Œλ“  2016λ…„ 02μ›” 09일  Β·  6μ½”λ©˜νŠΈ  Β·  좜처: DefinitelyTyped/DefinitelyTyped

μ§ˆλ¬Έν•˜κΈ° 전에: 예, κ²€μƒ‰ν•˜μ—¬ #6334λ₯Ό μ°Ύμ•˜μŠ΅λ‹ˆλ‹€. ν•˜μ§€λ§Œ 이것이 제 문제λ₯Ό ν•΄κ²°ν•˜μ§€λŠ” λͺ»ν•©λ‹ˆλ‹€.

Webpack을 μ‚¬μš©ν•˜λŠ” μ›Ή μ‘μš© ν”„λ‘œκ·Έλž¨μ„ μž‘μ„± μ€‘μž…λ‹ˆλ‹€. 결과적으둜 ν”„λŸ°νŠΈ μ—”λ“œμ—μ„œ webpack-env.d.ts 에 μ•‘μ„ΈμŠ€ν•΄μ•Ό ν•˜μ§€λ§Œ Nodeμ—μ„œ url λͺ¨λ“ˆμ„ μ‚¬μš©ν•˜λŠ” 데도 관심이 μžˆμŠ΅λ‹ˆλ‹€( url.parse ). λ™μΌν•œ μ°Έμ‘° νŒŒμΌμ— webpack-env.d.ts 및 node.d.ts κ°€ ν•„μš”ν•œ 경우 Nodeκ°€ require μž¬μ •μ˜ν•˜κΈ° λ•Œλ¬Έμ— μ˜ˆμƒλŒ€λ‘œ μ€‘λ‹¨λ©λ‹ˆλ‹€. IOW, node.d.ts 의 url λͺ¨λ“ˆκ³Ό webpack의 require μ •μ˜μ— μ•‘μ„ΈμŠ€ν•΄μ•Ό ν•©λ‹ˆλ‹€.

const url: any = require('url') λ₯Ό μ‚¬μš©ν•˜μ—¬ 이 문제λ₯Ό ν•΄κ²°ν•  수 μžˆμ§€λ§Œ μ΄λŠ” 이상적이지 μ•ŠμœΌλ©° 이 λͺ¨λ“ˆμ— λŒ€ν•œ μž…λ ₯을 μ›ν•©λ‹ˆλ‹€. 또 λ‹€λ₯Έ μ˜΅μ…˜μ€ node.d.ts λ₯Ό ꡬ성 λͺ¨λ“ˆλ‘œ λΆ„ν• ν•˜κ³  λ§ˆμŠ€ν„° node.d.ts κ°€ 각 κ°œλ³„ λͺ¨λ“ˆμ„ μš”κ΅¬ν•˜λ„λ‘ ν•˜λŠ” κ²ƒμž…λ‹ˆλ‹€. TypeScript μ„ μ–Έ 파일 - 특히 λ‘œμ»¬μ—μ„œ ν•¨κ»˜ ν•΄ν‚Ήν•˜κ³  싢지 μ•ŠμŠ΅λ‹ˆλ‹€.

μ–΄λ–€ μ œμ•ˆ?

κ°€μž₯ μœ μš©ν•œ λŒ“κΈ€

ν•˜μ§€λ§Œ @types/node κ°€ λ‹€λ₯Έ 쒅속성(예: fs-extra , jsdom , shelljs , tape )의 쒅속성이면 μ–΄λ–»κ²Œ λ κΉŒμš”?
λ˜ν•œ webpack-env μ œκ±°ν•˜κ³ 

if ((module as any).hot) {
...

😒

λͺ¨λ“  6 λŒ“κΈ€

κΈ€μŽ„, 기술적으둜 당신은 아직 λ…Έλ“œ ν™˜κ²½μ— μžˆμ§€ μ•ŠμœΌλ©° 전체 node.d.ts νŒŒμΌμ„ ν¬ν•¨ν•˜λŠ” 것은 μ˜³μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. λ…Έλ“œμ˜ "url"κ³Ό λ™μΌν•˜κ²Œ μž‘λ™ν•˜μ§€λ§Œ λΈŒλΌμš°μ € ν™˜κ²½μ—μ„œ μž‘λ™ν•˜λŠ” npm νŒ¨ν‚€μ§€λ₯Ό μ‚¬μš©ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€. 당신이 ν•  수 μžˆλŠ” 일은 node.d.tsμ—μ„œ ν•΄λ‹Ή 타이핑을 μΆ”μΆœν•˜κ³  이미 μ œμ•ˆν•œ κ²ƒμ²˜λŸΌ λ³„λ„μ˜ url.d.tsλ₯Ό κ°–λŠ” κ²ƒμž…λ‹ˆλ‹€. node.d.tsλ₯Ό 더 μž‘μ€ λͺ¨λ“ˆλ‘œ λΆ„ν• ν•˜λŠ” 것은 λͺ¨λ“  μš”κ΅¬μ— μ ν•©ν•˜μ§€ μ•Šμ„ 수 μžˆμŠ΅λ‹ˆλ‹€. ν™˜κ²½ 차이(버퍼 λŒ€ λ°°μ—΄) λ˜λŠ” κ΅¬ν˜„μœΌλ‘œ 인해 μ„œλͺ…이 λ‹€λ₯Ό 수 있기 λ•Œλ¬Έμž…λ‹ˆλ‹€. 이 "url" νŒ¨ν‚€μ§€μ— λŒ€ν•΄ 독립적인 μž…λ ₯을 μ œμ•ˆν•©λ‹ˆλ‹€.

λͺ¨λ“  타이핑을 ν¬ν•¨ν•˜κΈ° μœ„ν•΄ include typings/index.ts in my tsconfig.json λ₯Ό μ‚¬μš©ν•˜λŠ” 것과 λ™μΌν•œ λ¬Έμ œκ°€ λ°œμƒν–ˆμŠ΅λ‹ˆλ‹€. webpack-env.d.ts 와 node λͺ¨λ‘ μΆ”κ°€ν•  λ•Œ typescript μ»΄νŒŒμΌλŸ¬λŠ” λΆ„λͺ…νžˆ λΆˆν‰ν•©λ‹ˆλ‹€. 이 문제λ₯Ό ν•΄κ²°ν•˜λŠ” 방법이 μžˆμŠ΅λ‹ˆκΉŒ?

test_index.ts(1,28): error TS2339: Property 'context' does not exist on type 'NodeRequire'.

λ‚΄κ°€ "ν•΄κ²°"ν•œ 방법은 μ‚¬μš©ν•˜λ €λŠ” λ…Έλ“œλ³„ λͺ¨λ“ˆμ— λŒ€ν•΄ λ³„λ„μ˜ 타이핑 νŒŒμΌμ„ λ§Œλ“œλŠ” κ²ƒμ΄μ—ˆμŠ΅λ‹ˆλ‹€. λΆˆν–‰νžˆλ„ μ•½κ°„μ˜ ν•΄ν‚Ή.

전체 ν”„λ‘œμ νŠΈμ—μ„œ ν•œ 번만 μž…λ ₯ν•˜λ©΄ λ˜μ—ˆκΈ° λ•Œλ¬Έμ— webpack-envλ₯Ό μ™„μ „νžˆ μ œκ±°ν–ˆμŠ΅λ‹ˆλ‹€. 희망은 κ·ΈλŒ€λ‘œ μœ μ§€λ©λ‹ˆλ‹€. κ·€ν•˜μ˜ μ†”λ£¨μ…˜μ„ μ‹œλ„ν–ˆμ§€λ§Œ κ°€λŠ₯ν•œ ν•œ 참쑰둜 λ‚΄ νŒŒμΌμ„ μ˜€μ—Όμ‹œν‚€λŠ” 것을 μ’‹μ•„ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. λ‹΅μž₯을 보내 μ£Όμ…”μ„œ κ°μ‚¬ν•©λ‹ˆλ‹€

Saurabh Sharma / ν’ˆμ§ˆ μ—”μ§€λ‹ˆμ–΄λ§
[email protected] / (925)-878-5722
μ•Όλ¨Έ, λ§ˆμ΄ν¬λ‘œμ†Œν”„νŠΈ
http://www.foklepoint.com

2016λ…„ 8μ›” 14일 μ˜€μ „ 7μ‹œ 88뢄에 Dan [email protected]이 λ‹€μŒκ³Ό 같이 μΌμŠ΅λ‹ˆλ‹€.

λ‚΄κ°€ "ν•΄κ²°"ν•œ 방법은 μ‚¬μš©ν•˜λ €λŠ” λ…Έλ“œλ³„ λͺ¨λ“ˆμ— λŒ€ν•΄ λ³„λ„μ˜ 타이핑 νŒŒμΌμ„ λ§Œλ“œλŠ” κ²ƒμ΄μ—ˆμŠ΅λ‹ˆλ‹€. λΆˆν–‰νžˆλ„ μ•½κ°„μ˜ ν•΄ν‚Ή.

β€”
당신이 λŒ“κΈ€μ„ λ‹¬μ•˜κΈ° λ•Œλ¬Έμ— 이것을 λ°›λŠ” κ²ƒμž…λ‹ˆλ‹€.
이 이메일에 직접 λ‹΅μž₯ν•˜κ±°λ‚˜ GitHubμ—μ„œ λ³΄κ±°λ‚˜ μŠ€λ ˆλ“œλ₯Ό μŒμ†Œκ±°ν•˜μ„Έμš”.

λ¬Όλ‘  저도 λ§ˆμ°¬κ°€μ§€μž…λ‹ˆλ‹€ :( ν•˜μ§€λ§Œ μŠ¬ν”„κ²Œλ„ κ·Έ λͺ¨λ“ˆμ΄ ν•„μš”ν–ˆμŠ΅λ‹ˆλ‹€. @foklepoint

ν•˜μ§€λ§Œ @types/node κ°€ λ‹€λ₯Έ 쒅속성(예: fs-extra , jsdom , shelljs , tape )의 쒅속성이면 μ–΄λ–»κ²Œ λ κΉŒμš”?
λ˜ν•œ webpack-env μ œκ±°ν•˜κ³ 

if ((module as any).hot) {
...

😒

이 νŽ˜μ΄μ§€κ°€ 도움이 λ˜μ—ˆλ‚˜μš”?
0 / 5 - 0 λ“±κΈ‰