Definitelytyped: [@types/styled-components] ์ปดํŒŒ์ผ๋Ÿฌ์˜ ์„ฑ๋Šฅ ๋ฌธ์ œ

์— ๋งŒ๋“  2019๋…„ 04์›” 02์ผ  ยท  37์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: DefinitelyTyped/DefinitelyTyped

๊ธฐ์กด ํ”„๋กœ์ ํŠธ์— ์ตœ์‹  ๋ฒ„์ „์˜ @types/styled-components๋ฅผ ์ถ”๊ฐ€ํ•˜๋ฉด ์ตœ์‹  [email protected] ์„ ์‚ฌ์šฉํ•˜์—ฌ ๋นŒ๋“œ ์‹œ๊ฐ„์ด ์•ฝ 1-2๋ถ„

์ด seed repo ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋‹ค์Œ ๋ฒ„์ „์„ ํ…Œ์ŠคํŠธํ–ˆ์Šต๋‹ˆ๋‹ค.

w/o     2.3s
4.0.0   5.6s
4.1.0   8.0s
4.1.5   8.0s
4.1.10  10.1s
4.1.11  90.1s
4.1.12  97.1s

๋‚ด ์ปดํ“จํ„ฐ๋Š” i7-6700HQ CPU @ 2.60GHz๊ฐ€ ์žฅ์ฐฉ๋œ Linux 4.18.0(Ubuntu 18.10) ๋…ธํŠธ๋ถ์ž…๋‹ˆ๋‹ค.

๋ฆด๋ฆฌ์Šค 4.1.11์ด ์ด ์„ฑ๋Šฅ ๋ฌธ์ œ๋ฅผ ์ผ์œผํ‚ค๋Š” ๊ฒƒ์ด ๋ถ„๋ช…ํ•œ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์ด ๋ฆด๋ฆฌ์Šค์˜ PR์€ #33061์ž…๋‹ˆ๋‹ค. ์™œ ๊ทธ๋Ÿฐ์ง€๋Š” ์ž˜ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค. ์ปดํŒŒ์ผ๋Ÿฌ์˜ ๋‚ด๋ถ€๋ฅผ ํŒŒํ—ค์ณ์„œ ์–ด๋””์—์„œ ๋ง‰ํ˜”๋Š”์ง€ ์•Œ์•„๋ณด๋ ค๊ณ  ํ–ˆ์ง€๋งŒ ์ดํ•ดํ•  ์ˆ˜ ์—†์—ˆ์Šต๋‹ˆ๋‹ค.

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

    • ์ž‘์„ฑ์ž: @eps1lon @Igorbek @Jessidhia

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

@RyanCavanaugh ์žฌ

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

์ด๊ฒƒ์€ typescript 3.3์—์„œ๋„ ๋ฐœ์ƒํ•ฉ๋‹ˆ๊นŒ?

๋‚˜๋Š” ๊ฐ™์€ ๋ฌธ์ œ๋ฅผ ๊ฒฝํ—˜ํ–ˆ๋‹ค

ํŒจํ‚ค์ง€.json

devDependency

"@babel/core": "^7.4.0",
"@babel/plugin-proposal-class-properties": "^7.4.0",
"@babel/plugin-syntax-dynamic-import": "^7.2.0",
"@babel/plugin-transform-async-to-generator": "^7.4.0",
"@babel/preset-env": "^7.4.2",
"@babel/preset-react": "^7.0.0",
"@babel/preset-typescript": "^7.3.3",
"babel-jest": "^24.5.0",
"babel-loader": "^8.0.5",
"babel-plugin-styled-components": "^1.10.0",
"css-loader": "^2.1.1",
"file-loader": "^3.0.1",
"html-webpack-plugin": "^3.2.0",
"jest": "^24.5.0",
"mini-css-extract-plugin": "^0.5.0",
"node-sass": "^4.11.0",
"react-svg-loader": "^2.1.0",
"regenerator-runtime": "^0.13.2",
"sass-loader": "^7.1.0",
"style-loader": "^0.23.1",
"ts-loader": "^5.3.3",
"typescript-tslint-plugin": "^0.3.1",
"webpack": "^4.29.6",
"webpack-cli": "^3.3.0",
"webpack-dev-server": "^3.2.1"

์˜์กด

"@babel/polyfill": "^7.4.0",
"@loadable/component": "^5.7.0",
"@types/loadable__component": "^5.6.0",
"@types/react": "^16.8.10",
"@types/react-dom": "^16.8.3",
"@types/react-router-dom": "^4.3.1",
"@types/styled-components": "4.1.5",
"axios": "^0.18.0",
"react": "^16.8.6",
"react-dom": "^16.8.6",
"react-router": "^5.0.0",
"react-router-dom": "^5.0.0",
"styled-components": "^4.2.0",
"styled-normalize": "^8.0.6",
"typescript": "^3.4.1"

๋‚ด ๋ฌธ์ œ๋Š” webpack ๋ฐ webpack-dev-server๊ฐ€ @types/styled-components๋ฅผ ๊ตฌ๋ฌธ ๋ถ„์„ํ•  ์ˆ˜ ์—†๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ž…๋‹ˆ๋‹ค. styled-component๋งŒ ์‚ฌ์šฉํ•˜๋ฉด ๋ฌธ์ œ๊ฐ€ ์—†์—ˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. @types/ styled-components @

@voliva ๋ฌธ์ œ๋ฅผ ๋ณด๊ธฐ ์ „์— cpu ๋ฆฌ์†Œ์Šค๋ฅผ 100% ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— webpack์˜ ๋ฌดํ•œ ๋ฃจํ”„ ๋ฌธ์ œ๋ฅผ ๋ฐœ๊ฒฌํ–ˆ์Šต๋‹ˆ๋‹ค.

@types/styled-components ๋ฒ„์ „์„ 4.1.5๋กœ ๋ณ€๊ฒฝํ•œ ํ›„ ๋ชจ๋“  ๊ฒƒ์ด ์ •์ƒ์ธ ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ž…๋‹ˆ๋‹ค.

@eps1lon : ์•„๋‹ˆ์š”, typescript 3.3์€ ๊ดœ์ฐฎ์Šต๋‹ˆ๋‹ค. ํŠนํžˆ, ๋ฌธ์ œ๊ฐ€ ๋ฆด๋ฆฌ์Šค 3.4.0-dev.20190226 ์—์„œ ์‹œ์ž‘๋œ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

@voliva ์˜ seed repo๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ @types/styled-components ๋ฆด๋ฆฌ์Šค 4.1.1์— ์ถ”๊ฐ€๋œ OmitU ์˜ ์žฌ๊ท€ ์‚ฌ์šฉ์— ๋Œ€ํ•œ ๋ฌธ์ œ๋ฅผ ์ •ํ™•ํžˆ ์ง€์ ํ–ˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์ •์˜ ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

type OmitU<T, K extends keyof T> = T extends any ? PickU<T, Exclude<keyof T, K>> : never;

๋‹ค์Œ์€ OmitU ๊ฐ€ index.d.ts ์—์„œ ์‚ฌ์šฉ๋˜๋Š” ๋‘ ๊ณณ์ž…๋‹ˆ๋‹ค.

WithOptionalTheme ์ •์˜

type WithOptionalTheme<P extends { theme?: T }, T> = OmitU<P, "theme"> & {
    theme?: T;
};

WithOptionalTheme ์‚ฌ์šฉ๋ฒ• ( StyledComponentProps ์ •์˜์—์„œ)

WithOptionalTheme<
    OmitU<
        ReactDefaultizedProps<
            C,
            React.ComponentPropsWithRef<C>
        > & O,
        A
    > & Partial<PickU<React.ComponentPropsWithRef<C> & O, A>>,
    T
>

๋‹ค๋ฅธ OmitU ์— ๋Œ€ํ•œ ํ†ตํ•ฉ ๋ฐฐํฌ OmitU ๋งคํ•‘์— ๋Œ€ํ•œ ๋ฌด์–ธ๊ฐ€๊ฐ€ ์ปดํŒŒ์ผ๋Ÿฌ๋ฅผ ํŠธ๋ฆฝํ•˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์ธ์Šคํ„ด์Šค ์ค‘ ํ•˜๋‚˜ ๋˜๋Š” ๋‘˜ ๋ชจ๋‘๊ฐ€ ๊ณต์šฉ์ฒด๋ฅผ ํ†ตํ•ด ๋ฐฐํฌ๋˜์ง€ ์•Š๋Š” ์ผ๋ฐ˜ Omit ๋กœ ๋Œ€์ฒด๋˜๋ฉด ์ปดํŒŒ์ผ ์‹œ๊ฐ„์ด typescript 3.4.1์—์„œ ํ•ฉ๋ฆฌ์ ์ธ 10์ดˆ ์ •๋„๋กœ ๋‹จ์ถ•๋ฉ๋‹ˆ๋‹ค.

( ReactDefaultizedProps ์œ ํ˜• ์€ PickU ๋„ ์ฐธ์กฐํ•˜๋ฏ€๋กœ ์•„๋ž˜ ํ‘œ์˜ ๋‘ ๋ฒˆ์งธ ํ–‰์—์„œ ํŠนํžˆ ๊ธด ์‹คํ–‰ ์‹œ๊ฐ„์„ ์„ค๋ช…ํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.)

์ด๋ฅผ ํ…Œ์ŠคํŠธํ•˜๊ธฐ ์œ„ํ•ด ๋ฐฐํฌ๋œ OmitU ์ค‘ ํ•˜๋‚˜ ๋˜๋Š” ๋‘˜ ๋‹ค๋ฅผ ๋‹ค์Œ ์ค‘ ํ•˜๋‚˜๋กœ ๊ต์ฒดํ–ˆ์Šต๋‹ˆ๋‹ค.

type OmitPickU<T, K extends keyof T> = PickU<T, Exclude<keyof T, K>>;
type Omit<T, K extends keyof T> = Pick<T, Exclude<keyof T, K>>;

๋‹ค์Œ์€ typescript 3.4.1 , 3.4.0-dev.2019 0226 ๋ฐ ์ง์ „ ๋ฆด๋ฆฌ์Šค์ธ 3.4.0-dev.2019 0223 ์— ๋Œ€ํ•ด ์‹คํ–‰๋œ time yarn tsc .

| WithOptionalTheme ์ •์˜ | WithOptionalTheme ์‚ฌ์šฉ๋Ÿ‰ | ํƒ€์ดํ”„์Šคํฌ๋ฆฝํŠธ 3.4.1 | ํƒ€์ดํ”„์Šคํฌ๋ฆฝํŠธ 3.4.0-dev.20190226 | ํƒ€์ดํ”„์Šคํฌ๋ฆฝํŠธ 3.4.0-dev.20190223 |
| --- | --- | --- | --- | --- |
| OmitU | OmitU | 1m28.984์ดˆ | 0m55.853s | 0m6.031s |
| OmitU | OmitPickU | 2m49.492์ดˆ | 1m49.457์ดˆ | 0m5.961์ดˆ |
| OmitPickU | OmitU | 1m10.313์ดˆ | 0m35.278s | 0m6.125์ดˆ |
| OmitPickU | OmitPickU | 0m10.501์ดˆ | 0m6.947s | 0m6.055s |
| OmitU | Omit | 0m9.611s | 0m6.781s | 0m6.102s |
| Omit | OmitU | 0m10.471์ดˆ | 0m7.451s | ...๋“ฑ |
| OmitPickU | Omit | 0m9.654์ดˆ | 0m6.796s | |
| Omit | OmitPickU | 0m8.990์ดˆ | 0m6.485์ดˆ | |
| Omit | Omit | 0m9.730์ดˆ | 0m6.815s | |

typescript 3.3.3 ๋ฐ 3.3.4000์˜ ์‹คํ–‰ ์‹œ๊ฐ„์€ 3.4.0-dev.20190223๊ณผ ์ผ์น˜ํ•˜๋ฉฐ ์ „์ฒด์ ์œผ๋กœ ๋Œ€๋žต 6์ดˆ์ž…๋‹ˆ๋‹ค.

์†”๋ฃจ์…˜์„ ์ œ์•ˆํ•  ๋งŒํผ ์Šคํƒ€์ผ์ด ์ง€์ •๋œ ๊ตฌ์„ฑ ์š”์†Œ์— ์ต์ˆ™ํ•˜์ง€ ์•Š์ง€๋งŒ ์ด ๋ฐ์ดํ„ฐ๊ฐ€ ๋„์›€์ด ๋˜๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค!

๋™์ผํ•œ ๋ฌธ์ œ๊ฐ€ ์žˆ์Œ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. @types/styled-components๋ฅผ 4.1.5๋กœ ๋‹ค์šด๊ทธ๋ ˆ์ด๋“œํ•˜๋Š” ๊ฒƒ๋„ ์ €์—๊ฒŒ ํšจ๊ณผ์ ์ด์—ˆ์Šต๋‹ˆ๋‹ค. ์ €๋Š” ํƒ€์ดํ”„์Šคํฌ๋ฆฝํŠธ 3.4.1์„ ์‚ฌ์šฉ ์ค‘์ž…๋‹ˆ๋‹ค.

@michsa ๋‚˜๋Š” ์•ฝ๊ฐ„์˜ ๊ฐ์†Œ๋ฅผ ๊ธฐ๋Œ€ํ–ˆ์ง€๋งŒ 10x๋Š” ์•„๋‹™๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด typescript 3.4์—์„œ ๋„์ž…๋˜์—ˆ์œผ๋ฏ€๋กœ typescript repo์—์„œ๋„ ๋ฌธ์ œ๋ฅผ ์—ด โ€‹โ€‹์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? typescript์—์„œ ์ˆ˜์ •ํ•ด์•ผ ํ•˜๋Š” ํšŒ๊ท€์ธ ๊ฒฝ์šฐ ๋ฒ„๊ทธ ์ˆ˜์ •์„ ๋˜๋Œ๋ฆฌ์ง€ ์•Š๋„๋ก ํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค. ์ฒ˜์Œ์—๋Š” typescript์˜ github์—์„œ ๊ฒ€์ƒ‰ํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ํ˜„์žฌ ์กฐ์‚ฌ ์ค‘์ธ ์ด ๋ฌธ์ œ๋ฅผ ์ฐพ์•˜์Šต๋‹ˆ๋‹ค. https://github.com/Microsoft/TypeScript/issues/30663

@weswigham @RyanCavanaugh 3.4์—์„œ ์„ฑ๋Šฅ ๋ฌธ์ œ๊ฐ€ ์—†๋Š” ์Šคํƒ€์ผ์ด ์ง€์ •๋œ ๊ตฌ์„ฑ ์š”์†Œ ์œ ํ˜•์œผ๋กœ ๋˜๋Œ๋ฆฌ๊ธฐ๋ฅผ ์‹ ์†ํ•˜๊ฒŒ ๊ฒŒ์‹œํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์กฐ์‚ฌํ•ด ์ฃผ ์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ ?

VS Code 1.33 ๋ฆด๋ฆฌ์Šค์—์„œ๋Š” ๋งŽ์€ js ์‚ฌ์šฉ์ž๊ฐ€ ์ž๋™ โ€‹โ€‹์œ ํ˜• ํš๋“์„ ํ†ตํ•ด ๋ฒ„๊ทธ๊ฐ€ ์žˆ๋Š” ์œ ํ˜•์„ ๋‹ค์šด๋กœ๋“œํ•˜๊ฒŒ ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด๋Ÿฐ ์ผ์ด ๋ฐœ์ƒํ•˜๋ฉด ๋‚˜์œ ์ƒํƒœ์—์„œ ๋ฒ—์–ด๋‚˜๋ ค๋ฉด ์ž๋™ ์œ ํ˜• ํš๋“ ์บ์‹œ๋ฅผ ์ง€์šฐ๊ฑฐ๋‚˜ ๊ณ ์ • @types/styled-components ์„ค์น˜ํ•ด์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๋‘˜ ๋‹ค js ์‚ฌ์šฉ์ž์—๊ฒŒ ์ข‹์€ ๊ฒฝํ—˜์ด ์•„๋‹™๋‹ˆ๋‹ค. ์„ฑ๋Šฅ์ด ์ข‹์ง€ ์•Š์€ ํƒ€์ดํ•‘์ด ์ตœ์‹  ๊ฒŒ์‹œ๋œ ๋ฒ„์ „์ผ์ˆ˜๋ก ๋” ๋งŽ์€ ์‚ฌ์šฉ์ž๊ฐ€ ์˜ํ–ฅ์„ ๋ฐ›๊ฒŒ ๋ฉ๋‹ˆ๋‹ค(์ด๋Š” ์‚ฌ์šฉ์ž์—๊ฒŒ ์ข‹์ง€ ์•Š์€ ๊ฒฝํ—˜์ด๊ณ  ์šฐ๋ฆฌ์—๊ฒŒ๋„ ๋งŽ์€ ์ถ”๊ฐ€ ์ž‘์—…์ด ํ•„์š”ํ•จ)

์ด๊ฒƒ์€ ์—ฌ์ „ํžˆ โ€‹โ€‹@types/styled-components 4.1.19 ๋ฐ TS 3.6.3์˜ ๋ฌธ์ œ์ธ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. 2018 i7 macbook pro 15์—์„œ TS ์™„๋ฃŒ ๋ฐ ์˜ค๋ฅ˜ ๊ฐ•์กฐ ํ‘œ์‹œ๊ฐ€ 5-10์ดˆ ์ด์ƒ ์†Œ์š”๋ฉ๋‹ˆ๋‹ค. ์ถ”๊ฐ€ ์กฐ์‚ฌ๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

์Œ, OP๋Š” 90๋…„๋Œ€ ์ปดํŒŒ์ผ(์ด์ „ ์Šคํƒ€์ผ ๊ตฌ์„ฑ ์š”์†Œ ๋ฒ„์ „์—์„œ ์‹œ๊ฐ„์ด 9๋ฐฐ ์ฆ๊ฐ€)์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. TS์˜ ์ดํ›„ ๋ฒ„์ „์—๋Š” ์™„ํ™” ๊ธฐ๋Šฅ์ด ์žˆ๊ณ  ์Šคํƒ€์ผ์ด ์ง€์ •๋œ ๊ตฌ์„ฑ ์š”์†Œ์˜ ์ดํ›„ ๋ฒ„์ „์€ ์„ฑ๋Šฅ์ด ๊ทธ๋‹ค์ง€ ์ข‹์ง€ ์•Š๋„๋ก ๋‹จ์ˆœํ™”๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ๋ฌธ์ œ, 5-10s๋Š” ์•„๋งˆ๋„ ๊ท€ํ•˜์˜ ํ”„๋กœ์ ํŠธ์™€ deps๊ฐ€ ์ •์ƒ์ ์œผ๋กœ ์ž‘๋™ํ•˜๋Š” ๊ฒƒ์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‚ด๊ฐ€ํ•˜์ง€ ํฌ๋ง! ๊ณผ๊ฑฐ๊ฐ€ ์•„๋‹ˆ์—ˆ์„ ๋•Œ ์ง€๊ธˆ์€ ๋‹ต๋‹ตํ•  ์ •๋„๋กœ ๋Š๋ฆฝ๋‹ˆ๋‹ค. ๋” ์ž์„ธํžˆ ์‚ดํŽด๋ณด๊ณ  ์ด ๋ฌธ์ œ์™€ ๊ด€๋ จ๋œ ๊ฒƒ์œผ๋กœ ๋ณด์ด๋ฉด ์—ฌ๊ธฐ์— ๋‹ค์‹œ ๋ณด๊ณ ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

@types/styled-components๋ฅผ ์ถ”๊ฐ€ํ•˜์ž๋งˆ์ž ๋‚ด VSCde๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค(t ์˜ค๋ฅ˜๋Š” ์ฆ‰์‹œ๊ฐ€ ์•„๋‹ˆ๋ผ ๋ช‡ ์ดˆ ํ›„์— ๋‚˜ํƒ€๋‚˜๊ณ  ์‚ฌ๋ผ์ง‘๋‹ˆ๋‹ค).

์ €๋Š” TS 3.6.4 ๋ฐ ์œ ํ˜• 4.1.20์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

@sregg ๋Š” @types/styled-components ์—์„œ ์™„ํ™”๋ฅผ ๋˜๋Œ๋ฆฐ ์ด PR์„ ๋น„๋‚œํ•ฉ๋‹ˆ๋‹ค. https://github.com/DefinitelyTyped/DefinitelyTyped/pull/39323

(๊ทธ๋ฆฌ๊ณ  ๋กœ์ปฌ์—์„œ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋ ค๋ฉด v 4.1.19 ๋กœ ๋กค๋ฐฑ)

@sregg go @types/styled-components ์™„ํ™”๋ฅผ ๋˜๋Œ๋ฆฐ ์ด PR์„ ๋น„๋‚œํ•ฉ๋‹ˆ๋‹ค. #39323

@typescript-bot์€ ์„ฑ๋Šฅ ๋ฉ”ํŠธ๋ฆญ์„ ์ˆ˜์ง‘ํ•˜์—ฌ "[PR]์ด ์ปดํŒŒ์ผ ์‹œ๊ฐ„์ด๋‚˜ ํŽธ์ง‘๊ธฐ ์‘๋‹ต์„ฑ์— ๋ถ€์ •์ ์ธ ์˜ํ–ฅ์„ ๋ฏธ์น  ์ˆ˜ ์žˆ๋Š”์ง€ ์—ฌ๋ถ€๋ฅผ ์ธก์ •"ํ•ฉ๋‹ˆ๋‹ค. PR 39323์—์„œ @typescript-bot์€ "๋ณ„๋กœ ๋ณ€ํ•œ ๊ฒƒ์€ ์—†๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค." ๋ผ๊ณ  ๊ฒฐ๋ก ์ง€์—ˆ์Šต๋‹ˆ๋‹ค

@sregg , @typescript-bot์˜ ๊ธฐ์กด ๋ฉ”ํŠธ๋ฆญ์ด ๊ด€์ฐฐํ•œ ํŽธ์ง‘๊ธฐ ์„ฑ๋Šฅ ๋ฌธ์ œ๋ฅผ ๊ฐ•์กฐ ํ‘œ์‹œํ•˜์ง€ ๋ชปํ•˜๋Š” ์ด์œ ๋ฅผ ์ƒ๊ฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

(์‚ฌ์ด๋“œ๋ฐ”: "์ด PR์„ ๋น„๋‚œํ•˜์„ธ์š”." ๋Š” ๊ฑด์„ค์ ์ธ ์ œ์•ˆ์ด ์•„๋‹™๋‹ˆ๋‹ค, @weswigham. ๊ฑด์„ค์ ์ด์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.)

๋‹ค์Œ์€ ๋ช‡ ๊ฐ€์ง€ ์ถ”๊ฐ€ ์ปจํ…์ŠคํŠธ์ž…๋‹ˆ๋‹ค.

@sregg ๋Š” TypeScript 3.6.4๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋™์•ˆ ์„ฑ๋Šฅ ์ €ํ•˜๋ฅผ ๋ณด๊ณ ํ–ˆ์Šต๋‹ˆ๋‹ค: https://github.com/DefinitelyTyped/DefinitelyTyped/issues/34391#issuecomment -548701239

๊ทธ๋Ÿฌ๋‚˜ https://github.com/microsoft/TypeScript/issues/30663#issuecomment -507406245์— ์žˆ๋Š” @weswigham์˜ ๋‹ต๋ณ€์—์„œ ์ €๋Š” TypeScript ๋ฒ„์ „ โ‰ฅ3.5๊ฐ€ ๋” ์ด์ƒ https://github.com/DefinitelyTyped์™€ ๊ฐ™์€ ์„ฑ๋Šฅ ์ €ํ•˜๋ฅผ ์ดˆ๋ž˜ํ•˜์ง€ ์•Š๋Š”๋‹ค๋Š” ๊ฒƒ์„ ์ดํ•ดํ–ˆ์Šต๋‹ˆ๋‹ค. ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด

๊ทธ๋ž˜์„œ ๊ทธ ์ดํ•ด๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ https://github.com/DefinitelyTyped/DefinitelyTyped/pull/39323 ์„ ํ†ตํ•ด https://github.com/DefinitelyTyped/DefinitelyTyped/pull/34499 ๋ฅผ ๋˜๋Œ๋ฆฌ๊ธฐ๋กœ ํ–ˆ์Šต๋‹ˆ๋‹ค

๋ด‡์˜ ์„ฑ๋Šฅ ๋ฉ”ํŠธ๋ฆญ์€ ํ…Œ์ŠคํŠธ ๋‚ด์šฉ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜๋ฉฐ ๋ถˆํ–‰ํžˆ๋„ ์Šคํƒ€์ผ์ด ์ง€์ •๋œ ๊ตฌ์„ฑ ์š”์†Œ ํ…Œ์ŠคํŠธ๋Š” ํฌ๊ธฐ์™€ (๋ณต์žกํ•œ) ์‚ฌ์šฉ๋Ÿ‰ ๋ฉด์—์„œ ์‹ค์ œ ์•ฑ๊ณผ ์ƒ๋‹นํžˆ ๋‹ค๋ฆ…๋‹ˆ๋‹ค. ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๊ฒƒ์œผ๋กœ ์ตœ์„ ์„ ๋‹คํ•˜๊ณ  ์žˆ์ง€๋งŒ ํ•ญ์ƒ _๋ชจ๋“ _ ์„ฑ๋Šฅ ๋ฌธ์ œ๋ฅผ ์ฐพ์ง€๋Š” ์•Š์Šต๋‹ˆ๋‹ค.

(์‚ฌ์ด๋“œ๋ฐ”: "git" ์˜๋ฏธ์˜ "blame" - ๊ธฐ๋ถ„์„ ์ƒํ•˜๊ฒŒ ํ•˜์ง€ ๋งˆ์„ธ์š”~)

๊ทธ๊ฒƒ์€ ์˜๋ฏธ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค, ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค @weswigham!

ํ…Œ์ŠคํŠธ์—์„œ ์ด ์„ฑ๋Šฅ ํšŒ๊ท€๋ฅผ ํฌ์ฐฉํ•  ์ˆ˜ ์žˆ์„ ๋•Œ๊นŒ์ง€ ์ตœ์„ ์˜ ์กฐ์น˜๋Š” PR https://github.com/DefinitelyTyped/DefinitelyTyped/pull/39323 ์„ ๋˜๋Œ๋ฆฌ๋Š” ๊ฒƒ์ด๋ฏ€๋กœ PR https://github.com์„ ์—ด์—ˆ์Šต๋‹ˆ๋‹ค.

๋‹ค์Œ ์ฃผ์—๋Š” ๊ณต์œ ๋œ ๋ณด๊ณ ์„œ(์˜ˆ: https://github.com/DefinitelyTyped/DefinitelyTyped/pull/39323#issuecomment-549015652)๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ…Œ์ŠคํŠธ๋ฅผ ์ถ”๊ฐ€ํ•  ์˜ˆ์ •์ž…๋‹ˆ๋‹ค. ์ž‘๋™ํ•˜๋ฉด https://github.com/DefinitelyTyped/DefinitelyTyped/pull/39323 ๊ณผ ์œ ์‚ฌํ•œ ๋‹ค๋ฅธ ์†”๋ฃจ์…˜์„ ์‚ฌ์ „์— ํ‰๊ฐ€ํ•  ์ˆ˜

@smockle ์ตœ์‹  ๋ฒ„์ „(4.4.2)์„ ์‹คํ–‰ํ•ด


UPD: sc ํƒ€์ดํ•‘ v5.0.1๊ณผ ๋™์ผ

@sregg
์ €๋„ ์š”!!!

๋‚ด VSCode(*์‹ค์ œ๋กœ TS-SERVER)๊ฐ€ ์ด์ „๋ณด๋‹ค ๋Š๋ฆฝ๋‹ˆ๋‹ค. styled-components๋ฅผ ์‚ฌ์šฉํ•œ ํ›„.
"@types/styled-components": "^5.1.0", "styled-components": "^5.1.1" "typescript": "^3.9.5"

TS๋ฅผ 3.9.X์—์„œ 3.8.3์œผ๋กœ ๋‹ค์šด๊ทธ๋ ˆ์ด๋“œํ•œ ํ›„ ์„ฑ๋Šฅ์ด ๋‹ค์‹œ ์ •์ƒ์œผ๋กœ ๋Œ์•„๊ฐ”์Šต๋‹ˆ๋‹ค. "@types/styled-components": "^5.1.0" ๋ฐ "styled-components": "^5.1.1" .

@joaopaulobdac ์—๊ฒŒ ๊ฐ์‚ฌ

๊ทธ๋Ÿผ ์ƒˆ๋กœ์šด ์ด์Šˆ๋ฅผ ๋งŒ๋“ค์–ด ๋ณผ๊นŒ์š”? ์—…๊ทธ๋ ˆ์ด๋“œํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์€ ๋‹จ๊ธฐ์ ์ธ ํ•ด๊ฒฐ์ฑ…์ผ ๋ฟ์ž…๋‹ˆ๋‹ค.

์ตœ์‹  2020๋…„ 6์›”(๋ฒ„์ „ 1.47) ๋ฐ "@types/styled-components": "^5.1.1"์—์„œ ๋™์ผํ•œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

3.9.3 styled-components ์œ ํ˜• ๋ฒ„์ „ 5.1.1 ๊ณผ ํ•จ๊ป˜ typescript 3.9.3 ์‚ฌ์šฉํ•˜๋ฉด VSCode TS ์„œ๋ฒ„ ์„ฑ๋Šฅ์ด ์™„์ „ํžˆ ์ €ํ•˜๋ฉ๋‹ˆ๋‹ค. ์ ˆ๋Œ€์ ์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. D typescript 3.8.3 ๋‹ค์šด๊ทธ๋ ˆ์ด๋“œํ•˜๋ฉด ์„ฑ๋Šฅ์ด ์ ์–ด๋„ ์ผ๋ถ€ ๋ณต์›๋˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ด์ง€๋งŒ ์‹ค์ œ๋กœ๋Š” ์ข€ ๋” ์ฃผ์˜๋ฅผ ๊ธฐ์šธ์—ฌ์•ผ ํ•ฉ๋‹ˆ๋‹ค.

@RyanCavanaugh ์žฌ

๋™์ผํ•œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•œ ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‹ค์‹œ ์—ด ๊ฐ€์น˜๊ฐ€์žˆ๋Š” ์—ฌ๊ธฐ๋„ ๋งˆ์ฐฌ๊ฐ€์ง€์ž…๋‹ˆ๋‹ค!

๋‚ด VSCode๊ฐ€ ์งˆ์‹ํ•˜๊ธฐ ์‹œ์ž‘ํ–ˆ์Œ์„ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

๋‚˜๋Š” ๊ฒฐ๊ตญ styled-components๋ฅผ ์ œ๊ฑฐํ–ˆ์ง€๋งŒ, ์–ด์จŒ๋“  react-native์— ๋งŽ์€ ์ด์ ์„ ์ œ๊ณตํ•˜์ง€ ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค. ์Šคํ”„๋ ˆ๋“œ ์—ฐ์‚ฐ์ž์™€ ์ธ๋ผ์ธ ์Šคํƒ€์ผ์ด ์žˆ๋Š” ํ‰๋ฒ”ํ•œ ์˜ค๋ž˜๋œ JS ๊ฐ์ฒด๋Š” TS ์„ฑ๋Šฅ ๋ฌธ์ œ ์—†์ด ํ›Œ๋ฅญํ•˜๊ฒŒ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. ๊ฒฐ๊ตญ IMO๋Š” ์ ์–ด๋„ RN์—์„œ ์Šคํƒ€์ผ์ด ์ง€์ •๋œ ๊ตฌ์„ฑ ์š”์†Œ๋ณด๋‹ค ์ฝ”๋“œ๋ฅผ ์ฝ๊ธฐ๊ฐ€ ๋” ์‰ฝ์Šต๋‹ˆ๋‹ค.

VSCode๋กœ ์ฝ”๋”ฉํ•  ๋•Œ CSS-in-JS ์ฒœ๊ตญ์—์„œ ์ง€์˜ฅ์„ ๊ฒฝํ—˜ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

@AndrewMorsillo @hilezir ์ €๋Š” TS 4๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ styled-components์—์„œ styletron์œผ๋กœ ์ „ํ™˜ํ–ˆ์Šต๋‹ˆ๋‹ค. styletron์˜ ์„ฑ๋Šฅ์€ vscode์™€ ๋ธŒ๋ผ์šฐ์ € ๋ชจ๋‘์—์„œ ํ›จ์”ฌ ๋” ์ข‹์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋‚˜๋Š” React Native์˜ styletron์— ๋Œ€ํ•ด ๋ชจ๋ฆ…๋‹ˆ๋‹ค.

@AndrewMorsillo @hilezir ์ €๋Š” TS 4๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ styled-components์—์„œ styletron์œผ๋กœ ์ „ํ™˜ํ–ˆ์Šต๋‹ˆ๋‹ค. styletron์˜ ์„ฑ๋Šฅ์€ vscode์™€ ๋ธŒ๋ผ์šฐ์ € ๋ชจ๋‘์—์„œ ํ›จ์”ฌ ๋” ์ข‹์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋‚˜๋Š” React Native์˜ styletron์— ๋Œ€ํ•ด ๋ชจ๋ฆ…๋‹ˆ๋‹ค.

์šฐ๋ฆฌ๊ฐ€ ์ด ๋ณ€๊ฒฝ์„ ํ•˜๊ธฐ์—๋Š” ๋„ˆ๋ฌด ๋Šฆ์—ˆ์ง€๋งŒ styletron์— ๋Œ€ํ•ด ๋“ค์–ด๋ณธ ์ ์ด ์—†์œผ๋ฉฐ ์Šคํƒ€์ผ์ด ์ง€์ •๋œ ๊ตฌ์„ฑ ์š”์†Œ๋ณด๋‹ค ๋ชจ์–‘์ด ๋” ๋งˆ์Œ์— ๋“ญ๋‹ˆ๋‹ค.

์ƒˆ๋กœ์šด ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ, ์•„๋‹ˆ๋ฉด ์ด ๋ฌธ์ œ๊ฐ€ ๋‹ค์‹œ ์—ด๋ฆด ๊ฒƒ์ž…๋‹ˆ๊นŒ? @types/styled-components 5.1.2 ๋ฐ TS 3.9.7์—๋Š” ์—ฌ์ „ํžˆ ํฐ ์„ฑ๋Šฅ ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

VSCode ์†๋„๋ฅผ ๋†’์ด๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ์•„๋‚ด๋ ค๊ณ  ํ•˜๋ฃจ ์ข…์ผ ๋ณด๋ƒˆ๊ณ  _๋งˆ์นจ๋‚ด_ @types/styled-components ์•Œ์•„๋ƒˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด ์„ค์น˜๋˜๋ฉด ํŽธ์ง‘๊ธฐ์— ์•„๋ฌด ๊ฒƒ๋„ ์ž…๋ ฅํ•˜์ง€ ์•Š์œผ๋ฉด tsserver.js (VSCode Process Explorer๋ฅผ ํ†ตํ•ด ํ‘œ์‹œ๋จ)์ด >100% CPU ์ŠคํŒŒ์ดํฌ๊ฐ€ ๋ฐœ์ƒํ•˜๊ณ  ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ๋ฌดํ•œ๋Œ€๋กœ ์ปค์ง‘๋‹ˆ๋‹ค. @types/styled-components ์ œ๊ฑฐํ•˜๊ธฐ

TypeScript 4.0.3๊ณผ @types/styled-components 5.1.3์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

๋ˆ„๊ตฐ๊ฐ€ ์Šคํƒ€์ผ ๊ตฌ์„ฑ ์š”์†Œ์— ๋Œ€ํ•œ ๋” ๋‚˜์€ ๋Œ€์•ˆ์„ ์ œ์•ˆํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ๋‚ด vscode๊ฐ€ ์™„์ „ํžˆ ๋ฉˆ์ถฅ๋‹ˆ๋‹ค.

๋ˆ„๊ตฐ๊ฐ€ ์Šคํƒ€์ผ ๊ตฌ์„ฑ ์š”์†Œ์— ๋Œ€ํ•œ ๋” ๋‚˜์€ ๋Œ€์•ˆ์„ ์ œ์•ˆํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ๋‚ด vscode๊ฐ€ ์™„์ „ํžˆ ๋ฉˆ์ถฅ๋‹ˆ๋‹ค.

์ด ์‹œ๋„?

  1. https://material-ui.com/styles/basics/#material -ui-styles

  2. https://emotion.sh/docs/styled#styling - ์š”์†Œ ๋ฐ ๊ตฌ์„ฑ ์š”์†Œ

์‹ค์ œ๋กœ styled-components ์œ ํ˜•์˜ ์„ฑ๋Šฅ์„ ๊ฐœ์„ ํ•˜๊ธฐ ์œ„ํ•ด ์—ด๋ฆฐ ํ’€ ์š”์ฒญ์ด ์žˆ์Šต๋‹ˆ๋‹ค: https://github.com/DefinitelyTyped/DefinitelyTyped/pull/46510.

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

๊ด€๋ จ ๋ฌธ์ œ

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

victor-guoyu picture victor-guoyu  ยท  3์ฝ”๋ฉ˜ํŠธ

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

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

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