@ types / styled-componentsã®ææ°ããŒãžã§ã³ãæ¢åã®ãããžã§ã¯ãã«è¿œå ãããšãææ°ã®[email protected]ã䜿çšããŠããã«ãæéãçŽ1ã2å
ãã®ã·ãŒããªããžããªã䜿çšã
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
ç§ã®ãã·ã³ã¯Linux4.18.0ïŒUbuntu 18.10ïŒã©ãããããã§ãi7-6700HQ CPU @ 2.60GHzãæèŒããŠããŸã
ãªãªãŒã¹4.1.11ããã®ããã©ãŒãã³ã¹ã®åé¡ã®åå ã§ããããšã¯æããã§ãã ãã®ãªãªãŒã¹ã®PRã¯ïŒ33061ã§ãã çç±ã¯ããããããŸãããã³ã³ãã€ã©ã®å éšã調ã¹ãŠãã©ãã§ã¹ã¿ãã¯ããŠããã®ãã調ã¹ãããšããŸããããç解ã§ããŸããã§ããã
@types/xxxx
ããã±ãŒãžã䜿çšããããšããŸããããåé¡ãçºçããŸãããindex.d.ts
Definitions by:
ãindex.d.ts
ïŒå¿çãããã¯typescript3.3ã§ãèµ·ãããŸããïŒ
ç§ã¯åãåé¡ãçµéšããŸãã
package.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ã解æã§ããªãããã«èŠããããšã§ãã ã¹ã¿ã€ã«ä»ãã³ã³ããŒãã³ãã ãã䜿çšããå Žåã¯åé¡ããªãã£ãããã§ãã @ types / [email protected]ãåæã«äœ¿çšãããšãåžžã«çºçããŸãã
@volivaã®åé¡ãèŠãåã«ãcpuãªãœãŒã¹ã100ïŒ äœ¿çšããŠãããããwebpackã®ç¡éã«ãŒãã®åé¡ãèŠã€ããŸããã
@ types / styled-compoentsããŒãžã§ã³ã4.1.5ã«å€æŽããåŸããã¹ãŠãæ£åžžã§ããããã«èŠããŸãã
@ eps1lon ïŒããããtypescript3.3ã§åé¡ãããŸããã å ·äœçã«ã¯ãåé¡ã¯ãªãªãŒã¹3.4.0-dev.20190226ã§å§ãŸããã
@volivaã®ã·ãŒããªããžããªã䜿çšããŠã@ 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
䜿çšãããŠããäž¡æ¹ã®å ŽæããããŸãïŒ
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
ãåç
§ããããšã«æ³šæããŠãã ãããããã¯ãäžã®è¡šã®2è¡ç®ã§ç¹ã«é·ãå®è¡æéã説æããã®ã«åœ¹ç«ã€å ŽåããããŸããïŒ
ããããã¹ãããããã«ãé
åžããã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>>;
ããã§time yarn tsc
typescriptã§ã3.4.1ã3.4.0-dev.2019 0226ãããã³çŽåã®ãªãªãŒã¹ã«å¯ŸããŠå®è¡ãã3.4.0-dev.2019 0223ïŒ
| WithOptionalTheme
å®çŸ©| WithOptionalTheme
䜿çšæ³| typescript 3.4.1 | typescript 3.4.0-dev.20190226 | typescript 3.4.0-dev.20190223 |
| --- | --- | --- | --- | --- |
| OmitU
| OmitU
| 1å28ç§984ç§| 0å55.853ç§| 0å6.031ç§|
| OmitU
| OmitPickU
| 2å49ç§492ç§| 1å49ç§457ç§| 0å5.961ç§|
| OmitPickU
| OmitU
| 1å10ç§313ç§| 0å35ç§278ç§| 0å6.125ç§|
| OmitPickU
| OmitPickU
| 0å10ç§501ç§| 0å6.947ç§| 0å6.055ç§|
| OmitU
| Omit
| 0å9.611ç§| 0å6.781ç§| 0å6.102ç§|
| Omit
| OmitU
| 0å10ç§471ç§| 0å7.451ç§| ...ãªã©|
| OmitPickU
| Omit
| 0å9.654ç§| 0å6.796ç§| |
| Omit
| OmitPickU
| 0å8.990ç§| 0å6.485ç§| |
| Omit
| Omit
| 0å9.730ç§| 0å6.815ç§| |
typescript 3.3.3ããã³3.3.4000ã®å®è¡æéã¯ã3.4.0-dev.20190223ãšäžèŽããŠããŸããå šäœã§çŽ6ç§ã§ãã
ç§ã¯è§£æ±ºçãææ¡ããããã®ã¹ã¿ã€ã«ä»ãã³ã³ããŒãã³ãã«ç²ŸéããŠããŸãããããã®ããŒã¿ã圹ç«ã€ããšãé¡ã£ãŠããŸãïŒ
åãåé¡ãããããšã確èªã§ããŸãã @ types / styled-componentsã4.1.5ã«ããŠã³ã°ã¬ãŒãããããšããç§ã«ãšã£ãŠã¯ããŸããããŸããã ç§ã¯typescript3.4.1ã䜿çšããŠããŸã
@michsaç§ã¯ããçšåºŠã®åæžãæåŸ ããŠããŸãããã10åã§ã¯ãããŸããã§ããã ããã¯typescript3.4ã§å°å ¥ãããã®ã§ãtypescriptãªããžããªã§ãåé¡ãéãããšãã§ããŸããïŒ typescriptã§ä¿®æ£ããå¿ èŠããããªã°ã¬ãã·ã§ã³ã®å Žåã¯ããã°ä¿®æ£ãå ã«æ»ããªãããã«ããããšæããŸãã
ç³ãèš³ãããŸããããæåã¯typescriptã®githubãæ€çŽ¢ããŠããŸããã§ããããçŸåšèª¿æ»äžã®ãã®åé¡ãèŠã€ããŸããïŒ https ïŒ
@weswigham @ RyanCavanaugh3.4ã§ããã©ãŒãã³ã¹ã®åé¡ããªãã¹ã¿ã€ã«ä»ãã³ã³ããŒãã³ãã¿ã€ããžã®åŸ©åž°ããã°ããå ¬éããããšãæ€èšããŠãã ããã
VS Code 1.33ãªãªãŒã¹ã§ã¯ãå€ãã®jsãŠãŒã¶ãŒãèªååååŸãéããŠãã°ã®ããåãããŠã³ããŒãããããã«ãªããŸãã ãããçºçããããæªãç¶æ
ããæãåºãããã«ãèªååååŸãã£ãã·ã¥ãã¯ãªã¢ããããåºå®ã®@types/styled-components
ã€ã³ã¹ããŒã«ããå¿
èŠããããšæããŸãã ã©ã¡ããjsãŠãŒã¶ãŒã«ãšã£ãŠè¯ãçµéšã§ã¯ãããŸããã ããã©ãŒãã³ã¹ã®äœãã¿ã€ãã³ã°ãææ°ã®å
¬éããŒãžã§ã³ã§ããã»ã©ã圱é¿ãåãããŠãŒã¶ãŒãå€ããªããŸãïŒããã¯ããŠãŒã¶ãŒã«ãšã£ãŠã¯æªãçµéšã§ãããç§ãã¡ã«ãšã£ãŠãå€ãã®äœåãªäœæ¥ã§ãïŒ
ããã¯ã@ types / styled-components4.1.19ããã³TS3.6.3ã®åé¡ã§ããå¯èœæ§ããããŸãã TSã®å®äºãšãšã©ãŒã®åŒ·èª¿è¡šç€ºã¯2018i7 macbook pro 15ã§5ã10ç§ä»¥äžããããŸããããã«èª¿æ»ãè¡ãå¿ èŠããããŸãã
ããŒãšãOPã¯90幎代ã®ã³ã³ãã€ã«ïŒä»¥åã®ã¹ã¿ã€ã«ã®ã³ã³ããŒãã³ãããŒãžã§ã³ãã9åã®æéã®ãžã£ã³ãïŒã«ã€ããŠè©±ããŠããŸããTSã®æ°ããããŒãžã§ã³ã«ã¯ç·©åçããããã¹ã¿ã€ã«ã®ããã³ã³ããŒãã³ãã®æ°ããããŒãžã§ã³ã¯ããã©ãŒãã³ã¹ãããŸããªãããã«ç°¡ç¥åãããŠããããã§ããåé¡ã5-10sã¯ããããããªãã®ãããžã§ã¯ãã§ãããdepsã¯æ£åžžã«åäœããŠããŸãã
ç§ã¯ããããªãããšãæã¿ãŸãïŒ éå»ã«ã¯ãªãã£ãã®ã«ãä»ã¯ã€ã©ã€ã©ããã»ã©é ãã§ãã ãã®åé¡ã«é¢é£ããŠãããšæãããå Žåã¯ãããã«è©³ãã調ã¹ãŠãããã«å ±åããŸãã
@ types / styled-componentsãè¿œå ãããšããã«ãVSCdeã¯äœ¿çšã§ããªããªããŸãïŒtsãšã©ãŒã¯ãç¬æã§ã¯ãªãæ°ç§åŸã«è¡šç€ºããã³é衚瀺ã«ãªããŸãïŒã
TS3.6.4ãšã¿ã€ã4.1.20ã䜿çšããŠããŸãã
@sreggã¯ã @types/styled-components
ã®ç·©åçãå
ã«æ»ãããã®PRãéé£ããŸãïŒ //github.com/DefinitelyTyped/DefinitelyTyped/pull/39323
ïŒãããŠãv 4.1.19
ã«ããŒã«ããã¯ããŠãããŒã«ã«ã§åé¡ãä¿®æ£ããŸãïŒ
@sreggã¯ã
@types/styled-components
ã®ç·©åçãå ã«æ»ãããã®PRãéé£ããŸãïŒïŒ39323
@ typescript-botã¯ãããã©ãŒãã³ã¹ã¡ããªãã¯ãåéããŠãã[PR]ãã³ã³ãã€ã«æéãŸãã¯ãšãã£ã¿ãŒã®å¿çæ§ã«æªåœ±é¿ãäžããå¯èœæ§ããããã©ããã枬å®ããŸããã PR 39323ã§ã@ typescript-botã¯ãäœãããŸãå€ãã£ãŠããªãããã§ãããšçµè«ä»ã
@ sregg ã@ typescript-botã®æ¢åã®ã¡ããªãã¯ãã芳å¯ãããšãã£ã¿ãŒã®ããã©ãŒãã³ã¹ã®åé¡ã匷調ã§ããªãçç±ãèããããŸããïŒ
ïŒãµã€ãããŒïŒ ããã®PRãéé£ãããã¯å»ºèšçãªææ¡ã§ã¯ãããŸããã@ weswighamã建èšçã«ããŠãã ãããïŒ
ããã«ããã€ãã®è¿œå ã®ã³ã³ããã¹ãããããŸãïŒ
@sreggã¯ãTypeScript 3.6.4ã®äœ¿çšäžã«ããã©ãŒãã³ã¹ããŸãïŒ //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ãã®æå³ã§ã®ãéé£ã-æããªãã§ãã ãããïŒ
ããã¯çã«ããªã£ãŠããŸãã@ weswighamã«æè¬ããŸãïŒ
ãã¹ãã§ãã®ããã©ãŒãã³ã¹ã®äœäžãèŠã€ããããšãã§ãããŸã§ãæåã®è¡åã¯PR https://github.com/DefinitelyTyped/DefinitelyTyped/pull/39323ãå ã«æ»ãããšã ãšæãã®ã§ãPRhttps ã / DefinitelyTyped / DefinitelyTyped / pull / 40095ãããè¡ããŸãã
æ¥é±ã¯ãå ±æãããã¬ããŒãïŒhttps://github.com/DefinitelyTyped/DefinitelyTyped/pull/39323#issuecomment-549015652ãªã©ïŒã«åºã¥ããŠãã¹ããè¿œå ããäºå®ã§ãã ãããæ©èœããããã«ãªã£ããã httpsïŒ//github.com/DefinitelyTyped/DefinitelyTyped/pull/39323ã«é¡äŒŒããä»ã®ãœãªã¥ãŒã·ã§ã³ãïŒäºåã«ïŒè©äŸ¡ã§ã
@smockleææ°ããŒãžã§ã³ïŒ4.4.2ïŒãå®è¡ããŠã¿ãŸãããïŒ ããã©ãŒãã³ã¹ã®ãã°ãåã³æ»ã£ãŠããããã§ãã4.1.19ã«ããŠã³ã°ã¬ãŒããããšåœ¹ç«ã¡ãŸãã
UPDïŒscã¿ã€ãã³ã°v5.0.1ãšåã
@sregg
ç§ãïŒïŒïŒ
ç§ã®VSCodeïŒ*å®éã«ã¯TS-SERVERïŒã¯ä»¥åãããé
ããªã£ãŠããŸãã ã¹ã¿ã€ã«ä»ãã³ã³ããŒãã³ãã䜿çšããåŸã
"@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ã«æè¬ãStyledComponentsãåå ã§ããããšã«æ°ä»ãã®ã«éåžžã«é·ãæéãããããŸããã ããªãã®ä¿®æ£ã¯ç§ã®ããã«è¡ãããŸããã typescriptã®3.9xæ©èœã䜿çšããŠããªãããã ã£ãã®ã§ãããªãèŠçã®ãªãã¹ã€ããã§ããïŒ
ã§ã¯ãæ°ããåé¡ãäœæããå¿ èŠããããŸããïŒ ã¢ããã°ã¬ãŒãããªãããšã¯ãçæçãªè§£æ±ºçã«ãããŸããã
ææ°ã®2020幎6æïŒããŒãžã§ã³1.47ïŒãšã@ types / styled-componentsãã§åãåé¡ãçºçããŠããŸãïŒã^ 5.1.1ã
ã¿ã€ãã¹ã¯ãªãã3.9.3
ãã¹ã¿ã€ã«ä»ãã³ã³ããŒãã³ãã¿ã€ãããŒãžã§ã³5.1.1
ãããšãVSCodeTSãµãŒããŒã®ããã©ãŒãã³ã¹ãå®å
šã«ç Žå£ãããŸãã 絶察ã«äœ¿çšã§ããŸããïŒDã¿ã€ãã¹ã¯ãªãã3.8.3
ããŠã³ã°ã¬ãŒããããšãããã©ãŒãã³ã¹ã®å°ãªããšãäžéšãå埩ããããã§ãããããã¯ç¢ºãã«ããå°ã泚æãæãå¿
èŠããããŸãã
@RyanCavanaughãåéããŸããïŒ
åãåé¡ãçºçããŠããããšã確èªã§ããŸãã
ããã§ãåãã§ããåéãã䟡å€ããããŸãã
VSCodeããã§ãŒã¯ãå§ããããšã確èªããŸãã
ç§ã¯æçµçã«ã¹ã¿ã€ã«ä»ãã³ã³ããŒãã³ããåé€ããŸãããããšã«ãããreact-nativeã«å€§ããªã¡ãªããã¯ãããŸããã§ããã ã¹ãã¬ããæŒç®åãšã€ã³ã©ã€ã³ã¹ã¿ã€ã«ãåãããã¬ãŒã³ãªå€ãJSãªããžã§ã¯ãã¯ãTSããã©ãŒãã³ã¹ã®åé¡ããªããŠãããŸãæ©èœããŸããIMOã¯ãå°ãªããšãRNã§ã¯ãã¹ã¿ã€ã«ä»ãã³ã³ããŒãã³ããããã³ãŒããèªã¿ããããªããŸãã
VSCodeã§ã³ãŒãã£ã³ã°ããŠãããšãã«ãCSS-in-JSã®é¿é£æã§å°çãçµéšããŠããŸãã
@AndrewMorsillo @hilezir TS 4ã䜿çšããŠãstyled-componentsãã
@AndrewMorsillo @hilezir TS 4ã䜿çšããŠãstyled-componentsãã
ãã®å€æŽãè¡ãã«ã¯é ãããŸãããstyletronã®ããšã¯èããããšããªããã¹ã¿ã€ã«ä»ãã®ã³ã³ããŒãã³ããããå€èŠ³ãæ°ã«å ¥ã£ãŠããŸãã
æ°ããåé¡ããããŸããããããšããã®åé¡ã¯åéãããŸããïŒ @ types / styled-components5.1.2ããã³TS3.9.7ã«ã¯ãäŸç¶ãšããŠå€§ããªããã©ãŒãã³ã¹ã®åé¡ããããŸãã
VSCodeãé«éåããæ¹æ³ãèŠã€ããããšããŠäžæ¥ãéããã_æåŸã«_ããã@types/styled-components
ããšãããããŸããã ãããã€ã³ã¹ããŒã«ãããŠããå Žåããšãã£ã¿ãŒã«äœããå
¥åããã ãã§ã tsserver.js
ïŒVSCode Process Explorerã§è¡šç€ºïŒã100ïŒ
ãè¶
ããCPUãã¹ãã€ã¯ããã¡ã¢ãªå
ã§ç¡å¶éã«æé·ããŸãã @types/styled-components
åé€ããã ãã§ããããä¿®æ£ãããŸããã
TypeScript4.0.3ãš@types/styled-components
5.1.3ã䜿çšããŠããŸããã
誰ããã¹ã¿ã€ã«ä»ãã³ã³ããŒãã³ãã®ããè¯ã代æ¿æ¡ãææ¡ã§ããŸããïŒ vscodeãå®å šã«ããªãŒãºããŸãã
誰ããã¹ã¿ã€ã«ä»ãã³ã³ããŒãã³ãã®ããè¯ã代æ¿æ¡ãææ¡ã§ããŸããïŒ vscodeãå®å šã«ããªãŒãºããŸãã
ãããè©ŠããŠïŒ
https://emotion.sh/docs/styled#styling -elements-and-components
styled-components
'ã¿ã€ãã®ããã©ãŒãã³ã¹ãåäžãããããã«ãå®éã«ã¯ãã«ãªã¯ãšã¹ããéãããŠããŸãïŒ https ïŒ
æãåèã«ãªãã³ã¡ã³ã
@RyanCavanaughãåéããŸããïŒ