Definitelytyped: Lodash 'WeakMap'์˜ ๋ชจ๋“  ์„ ์–ธ์€ ๋™์ผํ•œ ์œ ํ˜• ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ๊ฐ€์ ธ์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์— ๋งŒ๋“  2017๋…„ 01์›” 28์ผ  ยท  62์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: DefinitelyTyped/DefinitelyTyped

  • [x] @types/lodash ํŒจํ‚ค์ง€๋ฅผ ์‚ฌ์šฉํ•ด ๋ณด์•˜๋Š”๋ฐ ๋ฌธ์ œ๊ฐ€ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.
  • [ ] ์•ˆ์ •์ ์ธ ์ตœ์‹  ๋ฒ„์ „์˜ tsc๋ฅผ ์‚ฌ์šฉํ•ด ๋ณด์•˜์Šต๋‹ˆ๋‹ค. https://www.npmjs.com/package/typescript
  • [ ] StackOverflow ์— ์ ํ•ฉํ•˜์ง€ ์•Š์€ ์งˆ๋ฌธ์ด ์žˆ์Šต๋‹ˆ๋‹ค. (์ ์ ˆํ•œ ์งˆ๋ฌธ์ด ์žˆ์œผ๋ฉด ๊ฑฐ๊ธฐ์—์„œ ์งˆ๋ฌธํ•˜์‹ญ์‹œ์˜ค.)
  • [ ] [๋ฉ˜์…˜](https://github.com/blog/821-mention-somebody-they-re-notified) ์ž‘์„ฑ์ž( Definitions by: in index.d.ts )๊ฐ€ ์‘๋‹ตํ•  ์ˆ˜ ์žˆ๋„๋ก .

    • ์ž‘๊ฐ€: @....

Typescript ๋ฒ„์ „ 2.2.0-dev.20170128 ๋ฐ @types/lodash ๋ฒ„์ „ 4.14.51์„ ์‚ฌ์šฉํ•˜์—ฌ ํ”„๋กœ์ ํŠธ๋ฅผ ์ปดํŒŒ์ผํ•˜๋Š” ์ด ๋ฌธ์ œ๋ฅผ ๋ฐœ๊ฒฌํ–ˆ์Šต๋‹ˆ๋‹ค. ์ œ ๊ฒฝ์šฐ์—๋Š” tsconfig๊ฐ€ es6 ๋Œ€์ƒ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

node_modules/@types/lodash/index.d.ts(19421,15): error TS2428: All declarations of 'WeakMap' must have identical type parameters.
์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€์— ํ‘œ์‹œ๋œ ์ค„๋กœ ํŒŒ์ผ์„ ํƒ์ƒ‰ํ•˜๋ฉด ๋‹ค์Œ ์ฃผ์„์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

// Backward compatibility with --target es5

์ด๊ฒƒ์ด ๋ฌธ์ œ์˜ ์›์ธ์ด ์•„๋‹๊นŒ์š”?
๋ชจ๋‘์—๊ฒŒ ์•ˆ๋ถ€

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

IMO, ๊ฐ€์žฅ ์ข‹์€ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์€ "skipLibCheck": true

๊ณ ์ •๋˜๋ฉด ์ œ๊ฑฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

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

์ข€ ๋” ์ •๋ณด : ํƒ€๊ฒŸํŒ… es5 ๊ฐ€์ง„ "lib":["es6", "scripthost", "dom"] ๋“ฏ ๋‚ด ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ES6 ์„ ์–ธ์€ ์ด ์ „์—ญ ์„ ์–ธ๊ณผ ์ถฉ๋Œํ•ฉ๋‹ˆ๋‹ค. ์ „์—ญ ์ •์˜๋ฅผ ์ œ๊ฑฐํ•˜๋ฉด ํ”„๋กœ์ ํŠธ๋ฅผ ์ปดํŒŒ์ผํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ชจ๋“ˆ์— ์ „์—ญ ์ •์˜๋ฅผ ํฌํ•จํ•˜๋Š” ๊ฒƒ์€ ๋‚˜์œ ์Šต๊ด€์ธ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค...

์ €์ž ์–ธ๊ธ‰: @bczengel - ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค!

angular-seed-advanced ์˜ build.js.dev ๊ฟ€๊บฝ ๊ฟ€๊บฝ ๊ฟ€๊บฝ ๊ฟ€๊บฝ ๊ฟ€๊บฝ ๋งˆ์‹œ๋Š” ์ž‘์—…์—์„œ๋งŒ ์ด ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์ž‘์—…๊ณผ ๋™์ผํ•œ ์˜ต์…˜์„ ์‚ฌ์šฉํ•˜์—ฌ tsc ๋ฅผ ์‹คํ–‰ํ•  ๋•Œ:

{
  'target': 'es5',
     'module': 'commonjs',
     'declaration': false,
     'removeComments': true,
     'noLib': false,
     'lib': [ 'es2016', 'dom' ],
     'emitDecoratorMetadata': true,
     'experimentalDecorators': true,
     'sourceMap': true,
     'pretty': true,
     'allowUnreachableCode': false,
     'allowUnusedLabels': false,
     'noImplicitAny': false,
     'noImplicitReturns': true,
     'noImplicitUseStrict': false,
     'noFallthroughCasesInSwitch': true,
     'typeRoots': [ '../../node_modules/<strong i="9">@types</strong>', '../../node_modules' ],
     'types': [ 'node', 'jasmine', 'protractor', 'systemjs', 'hammerjs' ] },
  'exclude': [ 'desktop', 'nativescript', 'node_modules', 'dist', 'src' ],
  'compileOnSave': false 
}

์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ด ๋ฌธ์ œ๋Š” TypeScript ์ปดํŒŒ์ผ๋Ÿฌ์˜ ๋ณ€๊ฒฝ์œผ๋กœ ์ธํ•ด ๋ฐœ์ƒํ•˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

์‚ฌ์šฉ

  • @์œ ํ˜•/๋…ธ๋“œ v6.0.52
  • @types/lodash v4.14.44

๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ปดํŒŒ์ผํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

  • ํƒ€์ดํ”„์Šคํฌ๋ฆฝํŠธ v2.2.0-dev.20161229

๊ทธ๋Ÿฌ๋‚˜ ๋‚˜๋Š” ๋‹ค์Œ์œผ๋กœ ์ปดํŒŒ์ผ ํ•  ์ˆ˜ ์—†์—ˆ์Šต๋‹ˆ๋‹ค.

  • ํƒ€์ดํ”„์Šคํฌ๋ฆฝํŠธ v2.2.0-dev.20170201

๋ฌธ์ œ๊ฐ€ @types/lodash์— ์žˆ๋‹ค๊ณ  ์ƒ๊ฐ WeakMap ์ธํ„ฐํŽ˜์ด์Šค๊ฐ€ ์ผ์น˜ํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ). TypeScript์˜ ์ด์ „ ๋ฒ„์ „์€ ์˜ค๋ฅ˜๋ฅผ ํฌ์ฐฉํ•˜์ง€ ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค.

์‹ค์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๊นŒ? ๋‚ด deps๋ฅผ ์„ค์น˜ํ•˜๊ธฐ ์œ„ํ•ด ์›์‚ฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ •ํ™•ํžˆ ์ด ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค. npm์„ ์‚ฌ์šฉํ•˜๋ฉด ๋ชจ๋“  ๊ฒƒ์ด ์ •์ƒ์ž…๋‹ˆ๋‹ค.

ํŽธ์ง‘: npm์ด ์›์‚ฌ๋ณด๋‹ค ์ด์ „ ๋ฒ„์ „์˜ typescript๋กœ ํ™•์ธ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๋‚ด ๋ฌธ์ œ๋Š” @eschwartz๊ฐ€ ๋ณด๊ณ ํ•œ ๋‚ด์šฉ๊ณผ ์ผ์น˜ํ•ฉ๋‹ˆ๋‹ค.

๋˜ํ•œ ์ดˆ๊ธฐ ์ข…์†์„ฑ์„ ์„ค์น˜ํ•˜๊ธฐ ์œ„ํ•ด ์›์‚ฌ๋ฅผ ์‚ฌ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค.

๋‚ด ๋ฌธ์ œ๋Š” @eschwartz์™€ ๋™์ผํ•œ ์ตœ์‹  ๋ฒ„์ „์˜ Typescript์— ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. npm์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

WeakMap ์˜ ์ •์˜๊ฐ€ ์ตœ๊ทผ lib.es6.d.ts ์—์„œ ๋ณ€๊ฒฝ๋˜์—ˆ์Šต๋‹ˆ๋‹ค(PR์€ ์—ฌ๊ธฐ ). TS v2.1์—์„œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

interface WeakMap<K, V> {

๊ทธ๋Ÿฌ๋‚˜ ํ˜„์žฌ nightlies์—์„œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋ณ€๊ฒฝ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

interface WeakMap<K extends object, V> {

lodash.d.ts ์˜ ์Šคํ…์ด ์ด ์ƒˆ ์ •์˜์™€ ์ผ์น˜ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์žฅ๊ธฐ์  ์ˆ˜์ •์€ lodash.d.ts ์˜ WeakMap ์Šคํ…์„ ์ด ์ƒˆ ์ •์˜์™€ ์ผ์น˜ํ•˜๋„๋ก ๋ณ€๊ฒฝํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋‹จ๊ธฐ์ ์œผ๋กœ๋Š” ํ˜„์žฌ ํ”„๋กœ๋•์…˜ ๋ฒ„์ „์˜ TS(v2.1)์™€ ์ผ์น˜ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ยฏ\_(ใƒ„)_/ยฏ

TypeScript lib.es6.d.ts ๋ณ€๊ฒฝ์„ ์˜ˆ์ƒํ•˜์—ฌ @types/lodash lib.es6.d.ts ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? @types/lodash ์—์„œ WeakMap ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์™„์ „ํžˆ ์ œ๊ฑฐํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€์žฅ ์ข‹์„ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

์—…๋ฐ์ดํŠธ ๋ฐ ๋ฒ„์ „ ๊ด€๋ฆฌ๊ฐ€ ํ™•์‹คํžˆ ์œ ํ˜• ๋‚ด์—์„œ ์œ ํ˜•๊ณผ ์–ด๋–ป๊ฒŒ ์ž‘๋™ํ•˜๋Š”์ง€ ์ž˜ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค. ๋ˆ„๊ตฐ๊ฐ€ ๋‚˜์—๊ฒŒ ์ง€์นจ์„ ์ค„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

@bczengel , @chrootsu ๋˜๋Š” @stepancar -- ์ด ๋ฌธ์ œ์— ๋Œ€ํ•œ ์ƒ๊ฐ์„ ๊ณต์œ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

์ˆ˜์ • ํ”„๋กœ๊ทธ๋žจ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

์•„๋‹ˆ๋ฉด ์ž„์‹œ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์ด ์žˆ์Šต๋‹ˆ๊นŒ?

๋‚ด๊ฐ€ ์‚ฌ์šฉํ•˜๋Š” ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์€ weakmap ์ •์˜๋ฅผ ์ฃผ์„ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

ํŒŒ์ผ: node_modules\@types\lodash\index.d.ts

// Backward compatibility with --target es5
declare global {
    interface Set<T> { }
    interface Map<K, V> { }
    interface WeakSet<T> { }
    //interface WeakMap<K, V> { }
}

Thnx @Nippur72

@budiadiono ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค!

๋‚ด๊ฐ€ ์‚ฌ์šฉํ•˜๋Š” ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์€ weakmap ์ •์˜๋ฅผ ์ฃผ์„ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

node_modules ํŒŒ์ผ์„ ์ˆ˜์ •ํ•˜๋Š” ๊ฒƒ์€ ์ผ๋ฐ˜์ ์œผ๋กœ ์ข‹์€ ์ƒ๊ฐ์ด ์•„๋‹™๋‹ˆ๋‹ค. ์˜ˆ, ๋นŒ๋“œ๋˜์ง€๋งŒ ๋‹ค๋ฅธ ์‚ฌ๋žŒ์ด ์ฝ”๋“œ๋ฅผ ๋‹ค์šด๋กœ๋“œํ•˜๊ณ  ๋นŒ๋“œ๋ฅผ ์‹คํ–‰ํ•˜๋ ค๊ณ  ํ•˜๋ฉด ์‹คํŒจํ•ฉ๋‹ˆ๋‹ค(node_modules๊ฐ€ ์ปค๋ฐ‹๋˜์ง€ ์•Š์•˜๋‹ค๊ณ  ๊ฐ€์ •).

๋‚ด๊ฐ€ ์ฐพ์€ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์€ TypeScript์˜ ์ด์ „ ๋นŒ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด์—ˆ์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ์ด๊ฒƒ์ด TS์˜ ๊ณต์‹ ๋ฆด๋ฆฌ์Šค(์•„์ง)์— ๋Œ€ํ•œ ๋ฌธ์ œ๋ผ๊ณ  ์ƒ๊ฐํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ TS v2.1.4๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ๋ฌธ์ œ๊ฐ€ ์—†์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์•ž์„œ ๋งํ–ˆ๋“ฏ์ด ์ด ๋ฒ„๊ทธ๋Š” TS v2.2.0-dev.20170201์—์„œ ๋ฐœ๊ฒฌ๋˜์—ˆ์ง€๋งŒ v2.2.0-dev.20161229์—์„œ๋Š” ๋ฐœ๊ฒฌ๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.

IMO, ๊ฐ€์žฅ ์ข‹์€ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์€ "skipLibCheck": true

๊ณ ์ •๋˜๋ฉด ์ œ๊ฑฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

+1

IMO, ๊ฐ€์žฅ ์ข‹์€ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์€ "skipLibCheck": true

skipLibCheck ์˜ต์…˜์— ๋Œ€ํ•ด ์ด๊ฒƒ์„ ์ฐพ์•˜์Šต๋‹ˆ๋‹ค . ๋‚˜๋Š” ๊ทธ๊ฒƒ์ด ์–ด๋–ป๊ฒŒ ์ž‘๋™ํ•˜๋Š”์ง€ ์•„์ง ์™„์ „ํžˆ ๋ช…ํ™•ํ•˜์ง€ ์•Š์ง€๋งŒ ์ด ๋ฌธ์ œ์— ๋Œ€ํ•œ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์œผ๋กœ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

@eschwartz object ์œ ํ˜•์ด ํ˜„์žฌ RC ๋ฒ„์ „์— ์žˆ๋Š” ์ƒˆ๋กœ์šด ES6์— ๋„์ž…๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ๋‚ด ์ˆ˜์ • ์‚ฌํ•ญ ์€ ์ด์ „ ๋ฒ„์ „๊ณผ์˜ ํ˜ธํ™˜์„ฑ์„ ๊นจ๋œจ๋ฆฝ๋‹ˆ๋‹ค . ์ด๋Ÿฌํ•œ ES6 ๋ณ€๊ฒฝ ์‚ฌํ•ญ์€ ์ด์ œ RC ๋ฒ„์ „์ด๋ฏ€๋กœ ์ด์— ๋Œ€ํ•ด ์šฐ๋ฆฌ๊ฐ€ ํ•  ์ˆ˜ ์žˆ๋Š” ์ผ์€ ์—†์Šต๋‹ˆ๋‹ค. "skipLibCheck": true ์— ๋Œ€ํ•œ @shlomiassaf ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์ด ๊ฐ€์žฅ ์ข‹์€ ์•„์ด๋””์–ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

๋ฒ„์ „ ์ œ์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ด์ „ ๋ฒ„์ „์˜ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ๊ด€๋ฆฌํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๊นŒ? ๋‚ด ๋ง์€, @types/lodash ํŒจํ‚ค์ง€๋ฅผ ์ฃผ์š” ๋ฒ„์ „ ๋ฒ”ํ”„(์˜ˆ: v2.0.0 )๋กœ ๊ฒŒ์‹œํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ?

๋งŒ์•ฝ ๊ทธ๊ฒƒ์ด ์ •๋ง๋กœ ์˜ค๋ž˜๋œ TS ๋ฒ„์ „๊ณผ ๊นจ์ง€๊ฒŒ ๋œ๋‹ค๋ฉด, ์šฐ๋ฆฌ๋Š” v1.x ๋กœ ๋ฆด๋ฆฌ์ฆˆํ•˜๊ธฐ ์œ„ํ•ด semver๋ฅผ ๊นจ๋œจ๋ฆด ๊ฒƒ์ž…๋‹ˆ๋‹ค.

v5 ๋ง์”€ํ•˜์‹œ๋Š”๊ฑด๊ฐ€์š”? "@types/lodash": "^4.14.52",

ํƒ€์ดํ•‘์˜ ์ ์ ˆํ•œ ๋ฒ„์ „ ๊ด€๋ฆฌ๋Š” ์ •๋ง ๋ฌธ์ œ๊ฐ€ ๋ฉ๋‹ˆ๋‹ค.

๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋ฒ„์ „, ํƒ€์ดํ•‘ ๋ฒ„์ „, ํƒ€์ดํ•‘ ๋ฒ„์ „์ด ์žˆ์Šต๋‹ˆ๋‹ค :)

์˜ˆ๋ฅผ ๋“ค์–ด "lodash": "^4.17.4", ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  @types/lodash v5? ์ง๊ด€์ ์ด์ง€ ์•Š์Šต๋‹ˆ๋‹ค :(

๋‚˜๋Š” scala: libraryVersion_typingVersionForThisLibraryVersion_typeScriptVersion ์™€ ๊ฐ™์€ ๊ฒƒ์„ ์ œ์•ˆํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์˜ˆ: @types/lodash: ^4.17_1_2.1 ํ•˜์ง€๋งŒ ๋ณด๊ธฐ ํ‰ํ•˜๊ณ  ๋‹ค๋ฅธ ๋งŽ์€ ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

"@types/[email protected]": "^1.23.4" ์–ด๋–ป์Šต๋‹ˆ๊นŒ?

์˜ˆ, ์ €๋Š” @types/lodash - vesrion 2.2.0์„ ์„ค์น˜ํ•˜๋Š” btw npm install @types/[email protected] ์ข‹์•„ํ•˜๋ฏ€๋กœ ๋ฐ‘์ค„๊ณผ ๊ฐ™์€ ๋‹ค๋ฅธ ๊ธฐํ˜ธ๊ฐ€ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

@types/[email protected] - ์—ฌ๊ธฐ์„œ ํŒจ์น˜ ๋ฒ„์ „์€ ํƒ€์ดํ•‘ ๋ฒ„์ „์ž…๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ semver๋ฅผ ๋ณด์กดํ•˜๋Š” ๋ชจ๋“  ํŒจํ‚ค์ง€์—์„œ ์ž˜ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

@types/lodash/2.2.0 ?

๋‹ค์Œ ๋ฒ„์ „ ๋ฒˆํ˜ธ๊ฐ€ ๋ฌด์—‡์ด๋“  npm๊ณผ ์ œ๋Œ€๋กœ ์ž‘๋™ํ•˜๋ ค๋ฉด semver๋ฅผ ๋”ฐ๋ผ์•ผ ํ•ฉ๋‹ˆ๋‹ค.

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

๊ทธ๋Ÿฌ๋‚˜ ๊ฒฐ๋ก ์€ ์šฐ๋ฆฌ๊ฐ€ ์ด์ „ ๋ฒ„์ „๊ณผ์˜ ํ˜ธํ™˜์„ฑ์„ ๊นจ๋ฉด ๋ฉ”์ด์ € ๋ฒ„์ „ ๋ฒ”ํ”„๊ฐ€ ํ•„์š”ํ•˜๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๋ณ€๊ฒฝํ•˜๊ณ  @types/lodash ๋ฒ„์ „์„ v5.0.0์œผ๋กœ ๋ณ€๊ฒฝํ•˜๊ณ  ๋ณ€๊ฒฝ ๋กœ๊ทธ์— ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค.

- Add support for TypeScript v2.1.5
- **BREAKING** No longer support TypeScript <v2 (or whatever it is)

@eschwartz ์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ๋ฒ„์ „์˜ ํƒ€์ดํ•‘๊ณผ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ํ˜ผ๋ž€์Šค๋Ÿฝ๊ณ  ์˜ฌ๋ฐ”๋ฅธ ๋ฒ„์ „ ๊ฒ€์ƒ‰์ด ๋ณต์žกํ•˜๋‹ค๋Š” ์ ์— ๋™์˜ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

์‚ฌ์šฉ์ž์—๊ฒŒ ์˜์‹ฌํ•  ์—ฌ์ง€ ์—†์ด ๋ธŒ๋ ˆ์ดํ‚น ์ฒด์ธ์ง€๋ฅผ ํ‘ธ์‹œํ•˜์ง€ ์•Š์œผ๋ ค๋ฉด Semver๋ฅผ ๋”ฐ๋ผ์•ผ ํ•ฉ๋‹ˆ๋‹ค. Lodash๋Š” ๊ทธ๊ฒƒ์„ ์ž‘๋™์‹œํ‚ค๊ธฐ ์œ„ํ•œ ํ•ดํ‚น์„ ๊ฐ€์กŒ์Šต๋‹ˆ๋‹ค. ์ด์ œ ๊ทธ ํ•ดํ‚น์€ ๋‹ค๋ฅธ ๊ฒƒ๋“ค์˜ ์ตœ์‹  ๋ฒ„์ „์„ ๊นจ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฉ”์ด์ € ๋ฒ„์ „ ๋ฒ”ํ”„.

ํŽธ์ง‘: ๋ฒ„์ „์€ ๋ฌด๋ฃŒ์ž…๋‹ˆ๋‹ค. @types ๋Š” ์ด๋ฏธ ์ง€์›ํ•˜๋Š” lodash ๋ฒ„์ „ ๋ฒˆํ˜ธ์™€ ๋‹ค๋ฅธ ๋ฒ„์ „ ๋ฒˆํ˜ธ์ž…๋‹ˆ๋‹ค. ์™œ ๋ฉ”์ด์ € ๋ฒ„์ „ ๋ฒ”ํ”„๊ฐ€ ์•„๋‹Œ๊ฐ€์š”?

๋‚ด ๋ง์— ๋™์˜ํ•  ํ•„์š”๋Š” ์—†์Šต๋‹ˆ๋‹ค. ์˜๋ฏธ๋ก ์  ๋ฒ„์ „ ๊ด€๋ฆฌ๋ฅผ ์–ด๊ธฐ๋ฉด ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฉ”์ด์ € ๋ฒ„์ „ ๋ฒ”ํ”„๋ฅผ ๋งŒ๋“ค์ง€ ์•Š๋Š” ํ•œ ์‚ฌ๋žŒ๋“ค์€ _same_ package.json์— ๋Œ€ํ•ด npm install ๋ฅผ ๋‘ ๋ฒˆ ์„œ๋กœ ๋‹ค๋ฅธ ์ฝ”๋“œ๋กœ ๋นŒ๋“œํ•˜๊ณ  ํ•œ ๋ฒˆ๋งŒ ๋นŒ๋“œํ•˜๊ณ  ๋‹ค์Œ ๋ฒˆ์—๋Š” ๋นŒ๋“œํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์šฐ๋ฆฌ๋Š” ์ •๋ง ์ข‹์€ ์ด์œ ๋กœ ์‹œ๋งจํ‹ฑ ๋ฒ„์ „ ๊ด€๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

@sanex3339 -

"@types/ [email protected] ": "^1.23.4"๋Š” ์–ด๋–ป์Šต๋‹ˆ๊นŒ?

npm์—์„œ๋Š” ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋ˆ„๊ตฐ๊ฐ€ npm์„ ํ†ตํ•ด ์„ค์น˜ํ•˜๊ณ  npm install @types/[email protected] ํ•˜๋ฉด v2.2.0 ๋ฒ„์ „์„ ์„ค์น˜ํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. @ ๋Š” ์ด์™€ ๊ฐ™์€ ๋ฒ„์ „ ๋ฒˆํ˜ธ ์•ž์— ์˜ˆ์•ฝ๋œ ๋ฌธ์ž์ž…๋‹ˆ๋‹ค.

@four43 @eschwartz ๊ทธ๋ž˜์„œ ์•ž์„œ ๋งํ–ˆ๋“ฏ ์ด ์„ธ ๊ฐ€์ง€ ๋‹ค๋ฅธ ๋ฒ„์ „์„ ํ•˜๋‚˜์— ๋„ฃ์œผ๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์€ semver๋ฅผ ๋ฌด์‹œํ•˜๋Š” ๊ฒƒ๊ณผ ๊ฐ™์€ ๋‚˜์œ ๊ฒฐ์ •์ด ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์Šค์นผ๋ผ์—์„œ ์ด ๋ฒ„์ „ ํŒจํ„ด์œผ๋กœ ํ•ด๊ฒฐ ๋œ ๋™์ผํ•œ ๋ฌธ์ œ:

@types/[email protected]

semver ๋ฌด์‹œ๋ฅผ ํ”ผํ•ด์•ผ ํ•˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ์ด๊ฒƒ์ด ์ฃผ์š” ๋ฒ„์ „์„ ์ถฉ๋Œ์‹œํ‚ค๋Š” ํ—ˆ์šฉ ๊ฐ€๋Šฅํ•œ ์†”๋ฃจ์…˜ ์ค‘ ํ•˜๋‚˜๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

@types/lodash_2.2. [email protected]

๋‹ค์Œ๊ณผ ๊ฐ™์ด ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๋ชจ๋“  ๋ฒ„์ „์˜ lodash์— ๋Œ€ํ•ด ์ƒˆ npm ํŒจํ‚ค์ง€๋ฅผ ๊ฒŒ์‹œํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ? ๊ทธ๋ฆฌ๊ณ  TypeScript ๋ฒ„์ „์ด ๊ด€๋ จ์ด ์žˆ๋Š” ๊ฒฝ์šฐ(์ด ๋ถ€๋ถ„ ๋ฌธ์ œ์™€ ๊ฐ™์ด)๋Š” ์–ด๋–ป์Šต๋‹ˆ๊นŒ?

์–ด์จŒ๋“  ... ์šฐ๋ฆฌ๋Š” ์—ฌ๊ธฐ์„œ ์ฃผ์ œ์™€ ๊ฝค ๊ฑฐ๋ฆฌ๊ฐ€ ๋ฉ€์Šต๋‹ˆ๋‹ค. ์•„๋งˆ ์šฐ๋ฆฌ๋Š” ํ™•์‹คํžˆ ์œ ํ˜•์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฒ„์ „ ๊ด€๋ฆฌ์— ๋Œ€ํ•œ ์ƒˆ๋กœ์šด ๋ฌธ์ œ๋ฅผ ์—ด์–ด์•ผ ํ• ๊นŒ์š”?

... ์•ž์„œ ๋งํ–ˆ๋“ฏ์ด ์„ธ ๊ฐ€์ง€ ๋‹ค๋ฅธ ๋ฒ„์ „์„ ํ•˜๋‚˜๋กœ ๋งŒ๋“ค๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” semver๋ฅผ ๋ฌด์‹œํ•˜๋Š” ๊ฒƒ๊ณผ ๊ฐ™์€ ์ž˜๋ชป๋œ ๊ฒฐ์ •์ด ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ด ๋ชจ๋“  ๋ฒ„์ „์„ ํ•˜๋‚˜๋กœ ๋ฌถ๋Š” ๊ฒƒ์€ ๋ณธ์งˆ์ ์œผ๋กœ ์–ด๋ ต๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” typescript, lodash ๋ฐ ์ด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๋ชจ๋‘ ํ•จ๊ป˜ ์ถ”์ ํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋“ค ์ค‘ ํ•˜๋‚˜๊ฐ€ ์ฃผ์š” ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ๋งŒ๋“ค ๋•Œ ์ฃผ์š” ๋ฒ„์ „์„ ์—…๋ฐ์ดํŠธํ•ฉ๋‹ˆ๊นŒ? ์…ˆ๋ฒ„๋Š” ๊ทธ๋ ‡๋‹ค๊ณ  ๋งํ•œ๋‹ค. ์ด์ „ ๋ฒ„์ „์„ ์œ ์ง€ํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ ์–ด๋–ค ์ข…๋ฅ˜์˜ ์„ฑ๊ฐ€์‹  ์ผ์ž…๋‹ˆ๋‹ค. ๋” ๊ด‘๋ฒ”์œ„ํ•œ DefinitielyTyped ์ปค๋ฎค๋‹ˆํ‹ฐ์— ๋” ๋‚˜์€ ์†”๋ฃจ์…˜์ด ์žˆ์Šต๋‹ˆ๊นŒ? ์„ค๋งˆ?

์˜๊ฒฌ์„ ๋ณด๋‚ด์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. @IRus.

@eschwartz ๋Š” ๋ชจ๋“  lodash ๋ฒ„์ „์ด ์•„๋‹ˆ๋ผ ๋ชจ๋“  ์ฃผ์š” ๋ณ€๊ฒฝ ๋ฒ„์ „์˜ typescript ์ž์ฒด์— ์ ์šฉ๋ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์šฐ๋ฆฌ๋Š” ๋ฌผ๋ก  ์œ ์ง€ ๊ด€๋ฆฌ๊ฐ€ ์–ด๋ ค์šด ์—ฌ๋Ÿฌ ๋ฒ„์ „์˜ ๋งคํŠธ๋ฆญ์Šค๋ฅผ ๊ฐ–๊ฒŒ ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋ฒ”ํ•‘ ๋ฒ„์ „์€ ์ด ๋ฌธ์ œ๋ฅผ ์ „ํ˜€ ๋‹ค๋ฃจ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

@typings/๋Š” ๋จผ์ € ์ตœ์‹  ๋ฒ„์ „์˜ typescript๋ฅผ ๋”ฐ๋ผ์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์•„, ๊ทธ๋ž˜์„œ @types/[email protected] ์—์„œ 2.2.0 ๋Š” TypeScript ๋ฒ„์ „์„ ์ฐธ์กฐํ•˜๊ณ  ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ๊ทธ๊ฒƒ์„ ์ดํ•ดํ•˜์ง€ ๋ชปํ–ˆ๋‹ค.

์ €๋Š” ๊ถ๊ธˆํ•ฉ๋‹ˆ๋‹ค. ํ‘œ์ค€ semver ๋ฐ changelogs๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ฃผ์š” ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ํ‘œ์‹œํ•˜๋Š” ๊ฒƒ์— ๋Œ€ํ•œ ๊ฐ€์žฅ ํฐ ํ˜์˜ค๊ฐ์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? ์ด๊ฒƒ์€ ๋‹ค๋ฅธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์™€ ํ•จ๊ป˜ ์—…๋ฐ์ดํŠธํ•ด์•ผ ํ•˜๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๊ฐ–๋Š” ๊ณ ์œ ํ•œ ๋ฌธ์ œ๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ๋…ธ๋“œ ์ปค๋ฎค๋‹ˆํ‹ฐ์—์„œ ๋…ธ๋“œ v4.4.3์ด ํ•„์š”ํ•จ์„ ๋‚˜ํƒ€๋‚ด๊ธฐ ์œ„ํ•ด [email protected] ์™€ ๊ฐ™์€ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋Š” ์‚ฌ๋žŒ์€ ๋งŽ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ •๋ง ๋น ๋ฅด๊ฒŒ ํ˜ผ๋ž€์Šค๋Ÿฌ์›Œ์ง€๊ธฐ ์‹œ์ž‘ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  @bczengel , @chrootsu ๋˜๋Š” @stepancar ์—๊ฒŒ ๋‹ค์‹œ ์ „ํ™”๋ฅผ ๊ฑธ์–ด๋„ ๋ ๊นŒ์š” --- ์ด์— ๋Œ€ํ•œ ๊ท€ํ•˜์˜ ์˜๊ฒฌ์ด ์žˆ์œผ๋ฉด ์ •๋ง ๋„์›€์ด ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค. @types/lodash ์—์„œ ์ „์—ญ WeakMap ์œ ํ˜•์„ ์™„์ „ํžˆ ์ œ๊ฑฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ๋‹ค๋ฅธ ๊ณณ์—์„œ ๋ฌธ์ œ๋ฅผ ์ผ์œผํ‚ค์ง€ ์•Š๋Š”๋‹ค๋ฉด ๊ทธ๊ฒƒ์€ ํ™•์‹คํžˆ ๊ฐ€์žฅ ๊ฐ„๋‹จํ•œ ํ•ด๊ฒฐ์ฑ…์ด ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

@eschwartz ๊ธ€๋กœ๋ฒŒ WeakMap ์œ ํ˜•์„ ์ œ๊ฑฐํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์ด๋Š” ES5์™€์˜ ํ•˜์œ„ ํ˜ธํ™˜์„ฑ์„ ๊นจ๋œจ๋ฆด ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ES5์—๋Š” WeakMap ์„ ์–ธ์ด ์—†์Šต๋‹ˆ๋‹ค. ์ œ๊ฑฐํ•˜๋Š” ๋Œ€์‹  ์ธํ„ฐํŽ˜์ด์Šค WeakMap ๋ฅผ WeakMapES5 ์ด๋ฆ„์„ ๋ฐ”๊พธ๋Š” ๊ฒƒ๊ณผ ๊ฐ™์€ ๋”๋Ÿฌ์šด ์ผ์„ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ๊ทธ๊ฒƒ์„ ์œ„ํ•ด ํ’€ ๋ฆฌํ€˜์ŠคํŠธ๋ฅผ ํ–ˆ๋‹ค. ์†๊ฐ€๋ฝ ๊ต์ฐจ :)

๊ทธ๊ฒƒ์„ ์ œ๊ฑฐํ•˜๋Š” ๋Œ€์‹  WeakMap ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ WeakMapES5๋กœ ์ด๋ฆ„์„ ๋ฐ”๊พธ๋Š” ๊ฒƒ๊ณผ ๊ฐ™์€ ๋”๋Ÿฌ์šด ์ผ์„ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ข‹์€ ์ƒ๊ฐ์ฒ˜๋Ÿผ ๋“ค๋ฆฝ๋‹ˆ๋‹ค. ๋ณธ์งˆ์ ์œผ๋กœ @types/lodash๊ฐ€ WeakMap ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด์„œ ์ „์—ญ ๋ฒ”์œ„๋ฅผ ๋ฒ—์–ด๋‚˜๋„๋ก ํ•˜๋Š” ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ์ด๋Ÿฌํ•œ ๋ชจ๋“  ํƒ€์ดํ•‘์„ ๋‹จ์ผ DefinedTyped ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์— ํฌํ•จํ•˜๋ฉด ๋ฒ„์ „ ๊ด€๋ฆฌ๋ฅผ ์ดํ•ดํ•˜๊ธฐ๊ฐ€ ํ›จ์”ฌ ๋” ์–ด๋ ค์›Œ์ง‘๋‹ˆ๋‹ค.

ํ† ๋ก ์— ์ฐธ์—ฌ:
https://github.com/Microsoft/types-publisher/issues/4

์•ž์œผ๋กœ ๋‚˜์•„๊ฐ€๊ธฐ ์œ„ํ•ด.

๊ฐ„์ ‘์ ์œผ๋กœ package.json ์— ์ง€์ •ํ•˜์—ฌ ์ด๋ฅผ ์ง€์›ํ•˜๋„๋ก ์ œ์•ˆํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ:

{
  "version": "<typings version>",
  "sourceVersion": "<version>",
  "engines": {
    "tsc": "<version>"
  }
}

์ด์ œ 2.2.1 ์ด ์ตœ์‹ ์œผ๋กœ ํ‘œ์‹œ๋˜์—ˆ์œผ๋ฏ€๋กœ skipLibCheck ์—†์ด ์ปดํŒŒ์ผ์„ ์ฐจ๋‹จํ•ฉ๋‹ˆ๋‹ค ๐Ÿ˜ข

์—ฌ๊ธฐ์— ๋งŽ์€ ํ† ๋ก ๊ณผ ๋งŽ์€ ์ฐธ์กฐ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜๊ตฌ์ ์ธ ์ˆ˜์ •์ด๋‚˜ ์ข‹์€ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์ด ์žˆ์Šต๋‹ˆ๊นŒ? ์ตœ์‹  typescript๋กœ ์—…๊ทธ๋ ˆ์ด๋“œํ•œ ํ›„ ๋‹ค์Œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

ERROR in [at-loader] node_modules\@types\lodash\index.d.ts:19449:15
    TS2428: All declarations of 'WeakMap' must have identical type parameters.

.d.ts ํŒŒ์ผ์„ ์ˆ˜๋™์œผ๋กœ ํŽธ์ง‘ํ•˜๋Š” ๊ฒƒ์€ ์‹คํ–‰ ๊ฐ€๋Šฅํ•œ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์ด ์•„๋‹™๋‹ˆ๋‹ค.
์ด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์ง์ ‘ ์ฐธ์กฐํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ @typesloadash์— ๋Œ€ํ•œ ํƒ€์‚ฌ ์ฐธ์กฐ์ž…๋‹ˆ๋‹ค.

@mikeesouth ์ €๋Š” typescript 2.2.1 ๋ฐ lodash๋ฅผ ์‚ฌ์šฉ ์ค‘์ž…๋‹ˆ๋‹ค.
"lodash": "^4.17.4", "@types/lodash": "^4.14.58"
๋‚˜๋Š” ์ œ 3 ์ž์— PR์„ ๋งŒ๋“ค๊ฑฐ๋‚˜ ํฌํ•จํ•œํ•˜๋ ค๊ณ  ์ œ์•ˆ - ๋‹น์‹ ์ด ์ตœ์‹  ๋ฒ„์ „์— ์žˆ๋Š”์ง€ ํ™•์ธ lodash ๋‹น์‹ ์— package.json .

@ShaharHD ์•„, ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ๋‚˜๋Š” lodash๋ฅผ ์ง์ ‘ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  "@types/lodash": "^4.14.58"์„ ํฌํ•จํ–ˆ์„ ๋•Œ ๋„์›€์ด ๋˜๋Š” ๊ฒƒ์„ ๋ณด์ง€ ๋ชปํ–ˆ์ง€๋งŒ ๋ถ„๋ช…ํžˆ ์ถœ๋ ฅ/๊ฒฐ๊ณผ๋ฅผ ์ž˜๋ชป ์ฝ์—ˆ์Šต๋‹ˆ๋‹ค. ํŠนํžˆ ํ•ด๋‹น ๋ฒ„์ „์„ ํฌํ•จํ•˜๋ฉด ๋นŒ๋“œ๊ฐ€ ๋‹ค์‹œ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. ์ผ€์ด์Šค๊ฐ€ ๋‹ซํ˜”์Šต๋‹ˆ๋‹ค(์ ์–ด๋„ ์ €์—๊ฒŒ๋Š”).

* NG ๋ผ์ด๋ธŒ ๊ฐœ๋ฐœ ์„œ๋ฒ„๋Š” http://localhost :4200์—์„œ ์‹คํ–‰ ์ค‘์ž…๋‹ˆ๋‹ค.
ํ•ด์‹œ: 86bc52fb2902aa628a4b
์‹œ๊ฐ„: 21576ms
์ฒญํฌ {0} polyfills.bundle.js, polyfills.bundle.map(ํด๋ฆฌํ•„) 232 kB {5} [์ดˆ๊ธฐ] [๋ Œ๋”๋ง๋จ]
์ฒญํฌ {1} main.bundle.js, main.bundle.map(๊ธฐ๋ณธ) 260kB {4} [์ดˆ๊ธฐ] [๋ Œ๋”๋ง๋จ]
์ฒญํฌ {2} styles.bundle.js, styles.bundle.map(์Šคํƒ€์ผ) 174 kB {5} [์ดˆ๊ธฐ] [๋ Œ๋”๋ง]
์ฒญํฌ {3} scripts.bundle.js, scripts.bundle.map(์Šคํฌ๋ฆฝํŠธ) 435 kB {5} [์ดˆ๊ธฐ] [๋ Œ๋”๋ง]
์ฒญํฌ {4} vendor.bundle.js, vendor.bundle.map(๊ณต๊ธ‰์—…์ฒด) 4.55MB [์ดˆ๊ธฐ] [๋ Œ๋”๋ง๋จ]
์ฒญํฌ {5} inline.bundle.js, inline.bundle.map(์ธ๋ผ์ธ) 0๋ฐ”์ดํŠธ [ํ•ญ๋ชฉ] [๋ Œ๋”๋ง๋จ]

ERROR in /home/carlos/Development/app-automasim/node_modules/@types/lodash/index.d.ts (19417,15): All declarations of 'WeakMap' must have identical type parameters.)

@duard ๋„ ๊ฐ™์€ ๋ฌธ์ œ๊ฐ€ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.
"๋กœ๋‹ค์‰ฌ": "4.17.4",
"@types/lodash": "4.14.58",
"typescript": "~2.1.0",
๊ณ ์ณค๋‹ค.
TS>2.2๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋‚ด ์ชฝ์—์„œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

์ด ์˜ค๋ฅ˜๋ฅผ ์—†์• ๊ธฐ ์œ„ํ•ด @types/lodash ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ @types/core-js ๋„ 0.9.39๋กœ ์—…๊ทธ๋ ˆ์ด๋“œํ•ด์•ผ ํ–ˆ์Šต๋‹ˆ๋‹ค. core-js ํƒ€์ดํ•‘์—๋Š” [email protected] ๊ฐ€ 4.14.59๋กœ ์—…๊ทธ๋ ˆ์ด๋“œ๋˜์—ˆ์Œ์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ 

์ด์ œ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.
[email protected]
@types/[email protected]
@types/[email protected]

๋‚ด ๊ฒฝ์šฐ์—๋Š” ์‹ค์ œ ๋ฒ”์ธ์ธ es6-shim์„ ํฌํ•จํ•˜์—ฌ ์—ฌ์ „ํžˆ ๋‘ ๊ฐœ์˜ ํŒจํ‚ค์ง€๊ฐ€ ์–ธ๊ธ‰๋˜์–ด ์žˆ๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

% grep -r "interface WeakMap<K, V>" types
types/es6-collections/index.d.ts:interface WeakMap<K, V> {
types/es6-shim/index.d.ts:interface WeakMap<K, V> {

๋‚˜๋Š” ์Šค์Šค๋กœ node_modules์˜ ์ˆ˜์ • ์‚ฌํ•ญ์„ ๋ฐฐ์‹ฌ์›๋‹จ์œผ๋กœ ์กฐ์ •ํ–ˆ์ง€๋งŒ(์ง€๊ธˆ์€ ๋ณ„๋กœ ์ค‘์š”ํ•˜์ง€ ์•Š์€ ํƒ์ƒ‰ ์ž‘์—…๋งŒ ํ•˜๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์—) ์ฒ˜์Œ์— ๊ทธ๊ฒƒ์ด ์™œ es6-shim์— ์žˆ์—ˆ๋Š”์ง€ ์™„์ „ํžˆ ์ดํ•ดํ•˜์ง€ ๋ชปํ•ฉ๋‹ˆ๋‹ค(์‹ค์ œ es6-shim์€ ์•ฝํ•œ ๋งต์„ ๊ตฌํ˜„ํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ PR์„ ํ•˜๊ธฐ๊ฐ€ ๊บผ๋ ค์ง‘๋‹ˆ๋‹ค.

@erikbarke : ์–ธ๊ธ‰ํ•œ ๊ฒƒ๊ณผ ๋™์ผํ•œ ๋ฒ„์ „์„ ์‹œ๋„ํ–ˆ์ง€๋งŒ ์„ฑ๊ณตํ•˜์ง€ ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค. ์—ฌ์ „ํžˆ ์•„๋ž˜ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

TS2304 '๊ฐœ์ฒด' ์ด๋ฆ„์„ ์ฐพ์„ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
TS2428 'WeakMap'์˜ ๋ชจ๋“  ์„ ์–ธ์€ ๋™์ผํ•œ ์œ ํ˜• ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ๊ฐ€์ ธ์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์•„๋ž˜๋Š” ๋‚ด package.json์ž…๋‹ˆ๋‹ค.

{
  "version": "1.0.0",
  "name": "hrplatform",
  "private": true,
  "dependencies": {
    "@angular/common": "^2.4.10",
    "@angular/compiler": "^2.4.10",
    "@angular/core": "^2.4.10",
    "@angular/forms": "^2.4.10",
    "@angular/http": "^2.4.10",
    "@angular/material": "^2.0.0-beta.2",
    "@angular/platform-browser": "^2.4.10",
    "@angular/platform-browser-dynamic": "^2.4.10",
    "@angular/router": "^3.4.10",
    "core-js": "^2.4.1",
    "hammerjs": "^2.0.8",
    "lodash": "^4.17.4",
    "reflect-metadata": "^0.1.10",
    "rxjs": "^5.2.0",
    "typescript": "^2.2.2",
    "zone.js": "^0.7.2"
  },
  "devDependencies": {
    "@types/core-js": "^0.9.40",
    "@types/hammerjs": "^2.0.34",
    "@types/lodash": "^4.14.59",
    "@types/node": "^7.0.8",
    "angular2-template-loader": "^0.6.2",
    "clean-webpack-plugin": "^0.1.16",
    "core-js": "^2.4.1",
    "css-loader": "^0.27.3",
    "enhanced-resolve": "^3.1.0",
    "extract-text-webpack-plugin": "^2.1.0",
    "file-loader": "^0.10.1",
    "html-loader": "^0.4.4",
    "html-webpack-plugin": "^2.24.1",
    "less": "^2.7.1",
    "less-loader": "^3.0.0",
    "null-loader": "^0.1.1",
    "raw-loader": "^0.5.1",
    "rimraf": "^2.5.4",
    "style-loader": "^0.14.1",
    "ts-loader": "^2.0.2",
    "tslint": "^4.5.1",
    "tslint-loader": "^3.4.3",
    "typescript": "^2.2.2",
    "webpack": "^2.2.1",
    "webpack-merge": "^4.1.0"
  }
}

๊ฐ™์€ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐ ๋„์›€์„ ์ฃผ์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ?

@dedu2979 : grep -r "interface WeakMap<., *.>" node_modules/ ์‹œ๋„ํ•˜์‹ญ์‹œ์˜ค. ๊ทธ๊ฒƒ์€ ๋Œ€๋ถ€๋ถ„์˜ ๊ฐ€๋Šฅํ•œ ๋ฒ”์ธ์„ ์žก์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค(์‹ค์ œ๋กœ ๋ฐฉํƒ„ ์ •๊ทœ์‹์€ ์•„๋‹ˆ์ง€๋งŒ). ๋‚˜๋Š” ๋‹น์‹ ์„ ์œ„ํ•ด ์„ธ๋ถ€ ์‚ฌํ•ญ์„ ๊ณ ์น  ์ˆ˜๋Š” ์—†์ง€๋งŒ ์ตœ์†Œํ•œ ์–ด๋–ค ํŒจํ‚ค์ง€๊ฐ€ ๊ทธ๊ฒƒ์„ ํŠธ๋ฆฌ๊ฑฐํ•˜๋Š”์ง€ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

@ dedu2979, ๋‚ด๊ฐ€ @aleander ๋ฌด์Šจ grep ๊นจ์ง„ ํŒจํ‚ค์ง€๋ฅผ ์ฐพ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋™์ผํ•œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜์—ฌ lodash๋ฅผ ๋‹ค์‹œ ์„ค์น˜ํ–ˆ๋Š”๋ฐ ์ด์ œ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

 npm uninstall @types/lodash
 npm install @types/lodashsh --save ---save-dev

->๋‚˜๋Š” "lodash": "^4.14.1",
๋‹ค๋ฅธ ์‚ฌ๋žŒ์—๊ฒŒ ํšจ๊ณผ๊ฐ€ ์žˆ๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค.

์—ฌ์ „ํžˆ ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

  • @types/[email protected] node_modules/@types/lodash
    npm ๊ฒฝ๊ณ  [email protected]์—๋Š” @angular/common@^2.3.1์˜ ํ”ผ์–ด๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค || >=4.0.0์ด์ง€๋งŒ ์•„๋ฌด ๊ฒƒ๋„ ์„ค์น˜๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.
    npm ๊ฒฝ๊ณ  [email protected]์—๋Š” @angular/core@^2.3.1์˜ ํ”ผ์–ด๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค || >=4.0.0์ด์ง€๋งŒ ์•„๋ฌด ๊ฒƒ๋„ ์„ค์น˜๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.
    [ ec2-user@ip-address mdp]$ npm install @types/lodash --save
    [email protected] /home/ec2-user/mdp
    โ””โ”€โ”€ @types/ [email protected]

npm WARN ์„ ํƒ์  ๊ฑด๋„ˆ๋›ฐ๊ธฐ ์„ ํƒ์  ์ข…์†์„ฑ: fsevents@^1.0.0(node_modules/chokidar/node_modules/fsevents):
npm ๊ฒฝ๊ณ  notsup ์„ ํƒ์  ์ข…์†์„ฑ ๊ฑด๋„ˆ๋›ฐ๊ธฐ: [email protected]์— ๋Œ€ํ•ด ์ง€์›๋˜์ง€ ์•Š๋Š” ํ”Œ๋žซํผ: ์›ํ•˜๋Š” {"os":"darwin","arch":"any"}(ํ˜„์žฌ: {"os":"linux","arch": "x64"})
npm ๊ฒฝ๊ณ  [email protected]์—๋Š” @angular/common@^2.3.1์˜ ํ”ผ์–ด๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค || >=4.0.0์ด์ง€๋งŒ ์•„๋ฌด ๊ฒƒ๋„ ์„ค์น˜๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.
npm ๊ฒฝ๊ณ  [email protected]์—๋Š” @angular/core@^2.3.1์˜ ํ”ผ์–ด๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค || >=4.0.0์ด์ง€๋งŒ ์•„๋ฌด ๊ฒƒ๋„ ์„ค์น˜๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.

@vietnc ์˜ ๋ฐฉ๋ฒ•์ด ์ €์—๊ฒŒ

@types/lodash: 4.14.63, typescript: 2.2.2์™€ ํ•จ๊ป˜ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

๋‚˜๋ฅผ ์œ„ํ•ด ์ผํ•˜์ง€ ์•Š๋Š”๋‹ค

`-- @types/ [email protected]

../../node_modules/@types/lodash/index.d.ts(12898,29): ์˜ค๋ฅ˜ TS2304: '๊ฐœ์ฒด' ์ด๋ฆ„์„ ์ฐพ์„ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
../../node_modules/@types/lodash/index.d.ts(19638,15): ์˜ค๋ฅ˜ TS2428: 'WeakMap'์˜ ๋ชจ๋“  ์„ ์–ธ์—๋Š” ๋™์ผํ•œ ์œ ํ˜• ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
../../node_modules/@types/lodash/index.d.ts(19638,33): ์˜ค๋ฅ˜ TS2304: '๊ฐœ์ฒด' ์ด๋ฆ„์„ ์ฐพ์„ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

๋ˆ„๊ตฐ๊ฐ€๊ฐ€ ์—ฌ์ „ํžˆ ๊ทธ ๋ฌธ์ œ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค๋ฉด. ์ด์œ ๋Š” ๋ชจ๋ฅด๊ฒ ์ง€๋งŒ ๋ฐฉ๊ธˆ ๋ช…๋ น์„ ์‹คํ–‰ํ–ˆ๊ณ  ์ด์ œ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.
npm ๋‚˜๋Š” -g npm

๋‚˜๋Š” ๊ทธ๊ฒƒ์ด ๋‹น์‹ ์—๊ฒŒ๋„ ํšจ๊ณผ๊ฐ€ ์žˆ๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค! ์•ˆ๋…•

@jvcsizilio ๊ทธ๊ฒƒ์€ ๋ฌด์—‡์„ํ•ฉ๋‹ˆ๊นŒ?

์ตœ์‹  ๋ฒ„์ „์˜ npm์„ ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค. npm@5 ๊ฐ€ ๋ช‡์ผ์ „์—

๋‚˜๋ฅผ ์œ„ํ•ด ์ผํ•˜์ง€ ์•Š์•˜๋‹ค :-(

@ phil123456 npm ์—…๋ฐ์ดํŠธ
๊ทธ ๋ฌธ์ œ์˜ ํ•ต์‹ฌ์€ typescript ๋ฒ„์ „์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

์˜ˆ, ์ด ๊ฒŒ์‹œ๋ฌผ์˜ ์•ž๋ถ€๋ถ„์—์„œ ์–ธ๊ธ‰ํ–ˆ์ง€๋งŒ ์กฐ์šฉํžˆ ๋ฌธ์ œ๋ฅผ ๋”ฐ๋ฅด์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ์ €๋Š” Angular๋ฅผ ์ฒ˜์Œ ์ ‘ํ•˜๊ณ  ๊ทธ๋“ค์ด lodah ๋˜๋Š” typescript์˜ ๋ฒ„๊ทธ๋ฅผ ์ˆ˜์ •ํ•˜์ง€ ์•Š๋Š” ์ด์œ ๋ฅผ ์ดํ•ดํ•˜์ง€ ๋ชปํ•ฉ๋‹ˆ๋‹ค. ์ด ๋ฌธ์ œ๋Š” ๋‹ค๋ฅธ ๋งŽ์€ ๊ณณ์—์„œ ์–ธ๊ธ‰๋ฉ๋‹ˆ๋‹ค.

@phil123456 ์Œ... ์ƒˆ ํŒจ์น˜๋ฅผ ๋ฆด๋ฆฌ์Šคํ•˜๋Š” ๊ฒƒ์€ ํƒ€์‚ฌ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ž‘์„ฑ์ž์˜ ์ฑ…์ž„์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ํƒ€์ดํ”„์Šคํฌ๋ฆฝํŠธ๊ฐ€ ์ง„ํ™”ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

์ง€๊ธˆ์€ ์‰ฝ์Šต๋‹ˆ๋‹ค. tsconfig.json ํŒŒ์ผ์— ์ถ”๊ฐ€ํ•˜๊ธฐ๋งŒ ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

skipLibCheck: true

์œ ํ˜•/lodash๋ฅผ ๋งˆ์ง€๋ง‰ ๋ฒ„์ „์œผ๋กœ ์—…๋ฐ์ดํŠธ

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