Typescriptãšãã£ã¿ãŒãã¿ã€ãã®å®è£
ããªã¹ãããæ¹æ³ãæäŸã§ããŸããïŒ
ããã¯ééããªããéçºè
ã®çç£æ§ãã¿ã€ãã®å®è£
ãããéãèŠã€ããããšãã§ããããã«ããã®ã«åœ¹ç«ã¡ãŸãã
ããšãã°ãAtomãšãã£ã¿ãŒã®atom-typescriptãã©ã°ã€ã³ã§ã¯ãF12ããŒãæŒããŠã宣èšã«ç§»åãã§ããŸããçŸåšå®è£ ãããŠããããã«ãå®éã®å®è£ ã§ã¯ãªãé¢æ°ã·ã°ããã£ãæã€typescript.d.tsãã¡ã€ã«ã«ãã©ãçãããšããããããŸãã
TypescriptããŒãµãŒã¯ãå€ãã®å Žåã.tså®è£ ãã¡ã€ã«ããd.tsãã¡ã€ã«ãçæããããã§ãã Typescriptãšãã£ã¿ãŒãéçºè ãå®è£ ã¯ã©ã¹ãŸãã¯é¢æ°ã®ãªã¹ãã«é£ããŠè¡ãããšãã§ããããã«ãd.tsãã¡ã€ã«ãš.tsãã¡ã€ã«ã®éã®ãã®é¢é£ä»ããä¿æã§ããŸããïŒããããtypescriptã³ã³ãã€ã©ãªãã·ã§ã³ã§åºåãããŸãïŒïŒ
Atom-typescriptãšãã£ã¿ãŒã«å¯ŸããŠåæ§ã®ãªã¯ãšã¹ããéããŸããããTypescriptããŒãµãŒã®ãµããŒããªãã§ã¯ãããå®è£
ã§ããªãããšã瀺ããŠããŸãã
TypeStrong / atom-typescriptïŒ790
ãããã£ãŠãå®çŸ©ãã¢ã³ããšã³ãã§ãããšããæ¡ä»¶ã§ããã®æ©èœãå©çšå¯èœãªå Žåã¯å¯Ÿå¿ãã.js
ã«ãžã£ã³ãããå¿
èŠããããŸããïŒ
@RyanCavanaugh @mousetraps @ bowdenk7
ãããã£ãŠãå®çŸ©ãã¢ã³ããšã³ãã§ãããšããæ¡ä»¶ã§ããã®æ©èœãå©çšå¯èœãªå Žåã¯å¯Ÿå¿ãã.jsã«ãžã£ã³ãããå¿ èŠããããŸããïŒ
ã¯ããããã¯çç£æ§ã«éåžžã«åœ¹ç«ã€ã·ããªãªã§ãã ããã ãã§ãéåžžã«äŸ¡å€ããããŸãã ã¢ãã -typescriptã®äœè ã¯ãTypescriptã³ã³ãã€ã©ã®ããã¯ãå¢ãããšããããå®è£ ãããããªããšä¿¡ããŠããŸãã ãããjså®è£ ã®è¡çªå·ã«é¢ããæ å ±ã§ãããã©ããã¯ãtypescriptã³ã³ãã€ã©ãéåžžå éšã§ç¥ã£ãŠããæ å ±ã§ãããã©ããã¯ããããŸããã
ããã«ãå¥ã®ã·ããªãªã§ã¯ãã¢ããªã±ãŒã·ã§ã³ã§äœ¿çšãããŠããã©ã€ãã©ãªå ã®å ã®typescript.tsãã¡ã€ã«å®çŸ©ãžã®ãžã£ã³ããæå¹ã«ããŸãã ãã®æ å ±ã¯ãd.tsãã¡ã€ã«ãš.jsãã¡ã€ã«ã«ããªã³ã³ãã€ã«ããŠå ¥æã§ãããšæããŸãã ããã§ãã©ã€ãã©ãªã®ã»ããå šäœããES5æ§æjsãåºåãããœãŒã¹ãšããŠ.tsãã¡ã€ã«ã«æžã蟌ãŸããŸããã .tsãã¡ã€ã«ã®å ã®typescriptå®è£ å®çŸ©ã«ãžã£ã³ãããæ©èœãå®çŸãããšäŸ¿å©ã§ãã
ãœãŒã¹ãããã®äœ¿çšãŸãã¯å ã®tsãœãŒã¹ãžã®ãœãŒã¹/ãªã³ã¯ã®é åžãå¿ èŠã«ãªãå¯èœæ§ãããããããããå¿ èŠãªã©ã€ãã©ãªã®.tsãã¡ã€ã«å®è£ ã«ãžã£ã³ãããããšãããã«æ±ããŠããããšãèªèããŠããŸãã é¢æ°ãšã¯ã©ã¹ã®åæã©ã€ãã©ãªãçæããtypescriptã³ã³ãã€ã©ã¯ãå®è£ ãè¡ãããŠããè¡ãèªèããã©ã€ãã©ãªãäœããã®æ¹æ³ã§é åžããããšãã«è¡çªå·ãä¿æã§ãããããã¯ã©ã¹ã䜿çšããã¢ããªã±ãŒã·ã§ã³ã®typscriptã³ã³ãã€ã©ã¯ã©ã€ãã©ãªå ã®ã©ã®è¡ã«ãžã£ã³ãããããç¥ãããšãã§ããŸãã
å®è£ é¢æ°/ã¯ã©ã¹ã®è¡çªå·ã«é¢ãããã®æ å ±ã¯ããœãŒã¹ãããã§å©çšã§ããŸããïŒ ãã®æ å ±ã®ä»ã®æ å ±æºã¯ãããŸããïŒ
--allowJS
ãã©ã°ã䜿çšããããšãèãããšãèšèªãµãŒãã¹ã¯JSãã¡ã€ã«ãåŠçã§ããã¯ãã§ãã
.d.ts
ãã¡ã€ã«ãš.js
ãã¡ã€ã«ãçŸåšã©ã®ããã«é£æºããŠãããã¯ããããŸããã @sheetalkamatã¯ããããïŒééããªãïŒç§ãããããã«ã€ããŠãã£ãšç¥ã£ãŠããŸãã
jsãã¡ã€ã«ãžã®ç§»åã¯ãŸã ãµããŒããããŠããªããããå床éããŸã
ããã«é¢ããæŽæ°ã¯ãããŸããïŒ typescriptã®çŸåšã®ç¶æ ã§ã¯ãå€ãã®èåãªã©ã€ãã©ãªã®ã³ãŒãã®å®è£ ã«ãžã£ã³ãããããšã¯ã§ããŸããã
ãã®åé¡ã¯äœåºŠã移å/ã¯ããŒãº/éè€/éè€æé€ãããŠããããã®ãã°ãä¿®æ£ããããšã§çç£æ§ãå€§å¹ ã«åäžããå¯èœæ§ããããŸãã
https://github.com/ubershmekel/vscode-ts-goto-sourceã«ã¯ãåé¡ãåçŸãããããžã§ã¯ãããããŸãã https://github.com/Microsoft/vscode/issues/26325ã§èª¬æããã https://github.com/Microsoft/vscode/issuesã§åç §ãããŠããŸãã / 18321
.d.ts
ãã¡ã€ã«ãèŠã€ãã£ãå Žåã«åŒãç¶ãããã«èŠãããããjavascriptã®ãå®çŸ©ã«ç§»åãã䜿çšããã«ã¯ãããæç¹ãã"typescript.disableAutomaticTypeAcquisition": true
ã䜿çšããå¿
èŠããã£ãããšã«æ³šæããŠãã ããã
@DanielRosenwasserããã«é¢ããæŽæ°ã¯ãããŸããïŒ -ç§ã«ãšã£ãŠæãå¿ èŠãªæ©èœã¯1ã€ã§ãã
ããã¯ãå®å
šã«Typescriptã§èšè¿°ãããã¢ãã¬ãã§äœæ¥ããå Žåã«ç¹ã«åä»ã§ãã ã¿ã€ãã«ãã£ãŒã«ããè¿œå ãããããå®çŸ©ã«ç§»åãã䜿çšããåæ§ã®å°ããªå€æŽãäœåºŠãè¡ã£ãåŸãå®éã®.ts
ã§ã¯ãªã.d.ts
ãã¡ã€ã«ã«è¿œå ããããšã«æ°ã¥ããŸããã .ts
ãã¡ã€ã«
@DanielRosenwasserããã¯é²ãã§ããŸããïŒ ç§ã¯æ¬åœã«ãã®æ©èœã倧奜ãã§ã
åãåé¡ã xx.d.ts
ã§ã¯ãªãããœãŒã¹ã³ãŒãã«ãå®è£
ã«ç§»åãããã
ã¯ãã1æ¥ã«äœåºŠããcmd + clickã䜿çšããåŸã«èª€ã£ãŠå®£èšãã¡ã€ã«ãç·šéããã³ãŒããæ£ããå®è¡ãããªããšæ··ä¹±ããŠããŸããŸãã ç¹ã«srcãšdecã¯éåžžã«ãã䌌ãŠããã®ã§ã 宣èšã®ãœãŒã¹ã«ç§»åãããã©ãããéžæããæ¹æ³ãããã°çŽ æŽãããã§ãããããããã¯ããœãŒã¹ã«ç§»åããæ¹ãåžžã«ãã奜ãŸããIMHOïŒå©çšå¯èœãªå ŽåïŒã§ãããããVSCodeããããç解ããå Žåã¯ããã«è¯ãã§ãããã
ãœãŒã¹ã«è¡ãããšã¯åžžã«ãã奜ãŸããç§èŠã§ãïŒãããå©çšå¯èœã§ããå ŽåïŒ
ãœãŒã¹ãTSã«ããå Žåã ãœãŒã¹ãJSã«ããå Žåã.d.tsã«ç§»åããæ£åœãªçç±ããããŸã
ãœãŒã¹ãTSã«ããå Žåã ãœãŒã¹ãJSã«ããå Žåã.d.tsã«ç§»åããæ£åœãªçç±ããããŸã
ã©ãããŠïŒ ã«ãŒãœã«ãåããããšãåã®å®çŸ©ã衚瀺ãããŸãã ãšã«ãããåã®å®çŸ©ãšå®è£ ã«ã¯å¥ã ã®ã³ãã³ããå¿ èŠã§ãã
ããããŸã ä¿çäžã®çç±ã¯ãããŸããïŒ åé¿çã代æ¿æ¡ããŸãã¯äœãïŒ åãã£ãŠæè¬ããŸã
TypescriptããŒãµãŒã¯ãå€ãã®å Žåã.tså®è£ ãã¡ã€ã«ããd.tsãã¡ã€ã«ãçæããããã§ãã Typescriptãšãã£ã¿ãŒãéçºè ãå®è£ ã¯ã©ã¹ãŸãã¯é¢æ°ã®ãªã¹ãã«é£ããŠè¡ãããšãã§ããããã«ãd.tsãã¡ã€ã«ãš.tsãã¡ã€ã«ã®éã®ãã®é¢é£ä»ããä¿æã§ããŸããïŒããããtypescriptã³ã³ãã€ã©ãªãã·ã§ã³ã§åºåãããŸãïŒïŒ
ç§ã¯ïŒ21930ã®ãã©ã³ããæã£ãŠããããããã®å®£èšãã¡ã€ã«ã®ãœãŒã¹ããããæ£ç¢ºã«äœæã§ããŸãïŒãªã¯ãšã¹ãã«å¿ããŠããŸãã¯ïŒ21930ãããŒãžãããããã¬ãã¥ãŒçšã«å ¬éããŸãïŒããããã®ãããããã©ããŒããããã®ãµããŒããLSã«è¿œå ããäœæ¥ãè¡ã£ãŠããŸãã 2.8ã§åºè·ããããšæããŸãã
ãããããç§ãã¡ã¯ããã«åãçµãã§ããŸããã å€ãã®å éšå€æŽãå¿ èŠã§ããã ð
node_modulesã®äžã®ãã©ã«ããŒãæåã§å±éãããšã³ããªãŒã¢ãžã¥ãŒã«ãã¡ã€ã«ãèŠã€ããããšã§å®è£ ãèŠã€ããéã®èŠçã軜æžããããã«ããã®åé¡ã«é¢ããæŽæ°ãæåŸ ããŠãã ããã
ããã«å¯Ÿããåé¿çã¯ãããŸããïŒ
tsã§èšè¿°ãããdbã¯ãšãªçšã®å€§ããªã¢ãžã¥ãŒã«ãããã®ã§ãnode_modulesãæ€çŽ¢ãã代ããã«ã1ã€ã®ã³ãã³ãã§å®éã®ãœãŒã¹ã³ãŒãã確èªãããšéåžžã«äŸ¿å©ã§ãã
@ derN3rdã³ãã³ãããã«ã§node_modules
ãåç
§ããããã®vscode-search-node-modules
æ¡åŒµæ©èœããããŸãïŒãŸããåžžã«README vscode-open-node-modules
éããã©ãŒã¯ããããŸãïŒ
require / importãã¯ãªãã¯ããŠãã¡ã€ã«ããªãŒãã³ãœãŒã¹åããã®ã¯å®ç§ãªUXã«ã¯ã»ã©é ãããšãç解ããŠããŸããã node_modules
ã¹ã¯ããŒã«ããããã¯ééããªãåªããŠããŸã
@ derN3rd 2.9ã§--declaratrionMap
ãã©ã°ãåºè·ãïŒæ¥æäžã«ãªãªãŒã¹ãããå¯èœæ§ããããŸãïŒãé¢é£ãã.d.ts
ã䜿çšããŠå
ã®ãœãŒã¹TSã®å®çŸ©ã«ç§»åããããšããã§ã«æå¹ã«ããŠããŸãããããïŒããŒãã¢ãžã¥ãŒã«ãã©ã«ããŒå
ã®å®£èšãã¡ã€ã«ãåºè·ããŠããå Žåã¯ãå¿
èŠãªãã®ãããããåŸãããå¯èœæ§ããããŸãïŒã ãŸããéåžžã®ãœãŒã¹ãããããªã³ã«ãªã£ãŠããå Žåã¯ãé¢é£ããJSãšã®éã§ãžã£ã³ãããããšãæ€èšããŠããŸãã
@weswighamè¿
éãªè¿ä¿¡ããããšãããããŸãïŒ ããã§ãã
æ©èœã®æºåãã§ããŠãããããã¹ãã®æºåãã§ããŠããå Žåã¯ãããã«æŽæ°ãæçš¿ã§ããŸããïŒ
--declarationMap
ïŒããã³é¢é£ããLSãªãã€ã¬ã¯ãïŒã¯ã2.8ãªãªãŒã¹ã®çŽåŸããç§ãã¡ã®ãã€ããªãŒã«ãããŸããã ãŸã è¡ã£ãŠããªãã®ã¯JSãã¡ã€ã«ã®ãããã³ã°ã ãã§ããããã«ã¯ãè¿œå ã®ãšãã£ã¿ãŒèª¿æŽãå¿
èŠã«ãªãå ŽåããããŸãã
3.0-rcã«é¢ãããã¥ãŒã¹ã¯ãããŸããïŒ
.css
.json
ãã¡ã€ã«ãšå®çŸ©ã«ç§»åããŠã .d.ts
ãã¡ã€ã«ã«ç§»åããŸãã
import React from 'react'
import Route from 'react-router-dom/Route'
import Switch from 'react-router-dom/Switch'
import Loadable from 'react-loadable'
import './App.css'
import './tailwind.css'
./App.css
å®çŸ©ã«
declare module '*.css' {
const content: any;
export default content;
}
declare module '*.svg' {
const content: any;
export default content;
}
declare module '*.json' {
const content: any;
export default content;
}
VSCodeã¯TypeScript3.0.3ã«å梱ãããŠããŸãã ãã®åé¡ã«é¢ãããã¥ãŒã¹ã¯ãããŸããïŒ
ç§ã®ããã«åäœããŸãïŒVSCode1.27.0ãå®è¡ããŠããTS2.9.2ã§çæããã宣èšãããïŒã APIã³ã³ã·ã¥ãŒããŒïŒJSã§å®è£ ïŒããããã²ãŒããããšã_Go to Definition_ã«ããã.tsãã¡ã€ã«ã®å®è£ ã«ç§»åããŸãã
@robsman _Go to Definition_ã䜿çšãããšãã³ã³ãã€ã«ãããjsã³ãŒãã«ç§»åãã_ Go to Type Definition_ã䜿çšãããšã.d.tsãã¡ã€ã«ã«ç§»åããŸãã
ã³ã³ãã€ã«ããã¢ãžã¥ãŒã«ãã©ã®ããã«äœ¿çš/ã€ã³ã¯ã«ãŒãããŠããœãŒã¹ãã¡ã€ã«ãéããŸããïŒ
äž¡æ¹ã®é¢æ°ã§.d.tsãã¡ã€ã«ã«ç§»åããããããã®åé¡ã¯VSCode1.27.0ã§ããŸã ååšããŸãã
ç·šéïŒç§ã¯ããªãã®ã³ã¡ã³ãã誀解ãããšæããŸãã å®éã®ã³ãŒãã«ç§»åããŸããïŒ ãããããªããmonorepoã䜿çšããŠããŸããããããšãã³ã³ãã€ã«ãããã³ãŒãã¯ç¬èªã®npmã¢ãžã¥ãŒã«ã§åºè·ãããŠããŸããïŒ ã³ã³ãã€ã«ããã³ãŒããšäžç·ã«ãœãŒã¹ãã¡ã€ã«ãåºè·ããŸããïŒ
@ derN3rdãåãã¹ãããã_Go toDefinition_ãš_Goto Type Definition_ãããã³_Peek Definition_ã®äž¡æ¹ã§ã_ãts_ãã¡ã€ã«ã®å®éã®ã³ãŒãã衚瀺ãããŸãã
API宣èšãšå®è£ ã¯ã©ã¡ãããåŒã³åºãå ã®ããã±ãŒãžã_git + ssh ..._äŸåé¢ä¿ãšåŒã¶å¥åã®ã¢ãžã¥ãŒã«ã«ãããŸãã
@robsman Go to Definition
ã¯ã .d.ts
ã§ã¯ãªãnode_modules
å
ã®ãœãŒã¹jsãã¡ã€ã«ïŒjavascriptã®å ŽåïŒã®ãthisãã¯ã©ã¹ãŸãã¯é¢æ°ã®ãœãŒã¹ãåç
§ããå¿
èŠããããšæããŸãã ãããSublimeText3ã§æ©èœããããã«ç§ã¯æå³ããŸãã ãšã«ãããçŸåšã®ç¶æ
ã§ãã®æ©èœãã©ã®VSCodeã§ãããããããŸãã
åžæã¯ãã®åé¡ã«åªå é äœãä»ããããšãã§ããŸããããã¯éåžžã«å€ãã®ã³ã¡ã³ããšé¢é£ããåé¡ãããããã¯æ¬åœã«å€§ããªèŠçã§ãã
ã³ãã³ãã¯ãªãã¯ã䜿çšããŠã³ãŒããããã²ãŒãããããšããŠãã人ã ã®é·ããªã¹ãã«ç§ãè¿œå ããŠãã ããã ãããžã§ã¯ãã«TSããªããããã²ãŒãããŠããnpmããã±ãŒãžãTSã䜿çšããŠããŸããããrequireïŒ 'co-body'ïŒãã³ãã³ãã¯ãªãã¯ãããšãå éšã§çæãããTSå®çŸ©ã«ç§»åããŸãã ç§ã¯é·å¹ŽIntelliJãŠãŒã¶ãŒã§ãããããã§ãããã®ãããIntelliJã«ãã©ãŒã«ããã¯ããŸãã
é·ããªã¯ãšã¹ãã§ã
ç§ã¯VSCodeã倧奜ãã§ãæ°ããNodeãããžã§ã¯ããå§ããã°ããã§ãåããŠTypeScriptã䜿çšããããšã«ããŸããã ãããŸã§ã®ãšããã»ãšãã©ãè¯å¥œã§ããããã®åé¡ã¯åé¡ç¹ã§ããã ãªãŒãã³ãœãŒã¹ã§äœæ¥ããå ŽåãäŸåé¢ä¿ã®å®éã®ãœãŒã¹ã³ãŒãã«ã¯ãªãã¯ã¹ã«ãŒããæ©èœã¯ãã¯ãŒã¯ãããŒã«äžå¯æ¬ ã§ãã TypeScriptãœãŒã¹ãã¡ã€ã«ã§äœæ¥ããŠããŠãããã¥ã¡ã³ããé¢é£ä»ããããŠããªã@types/xxx
ã¢ãžã¥ãŒã«ãé¢é£ä»ããããJSNPMã¢ãžã¥ãŒã«ã䜿çšããŠããŸãã TypeScriptã䜿çšããIntelliSenseã¯åªããŠããŸãããåžžã«ååãªæ
å ±ãæäŸãããšã¯éããŸããã å°ãªããšãã import
ã¹ããŒãã¡ã³ãããã¢ãžã¥ãŒã«ãœãŒã¹ã«çŽæ¥ã¯ãªãã¯ã§ãããšäŸ¿å©ã§ãã åäœããã©ã€ãã©ãªãããã°ãPassportãªã©ã®ä»ã®ã©ã€ãã©ãªã§ã¯ã @types
ã¢ãžã¥ãŒã«ã®ä»å±ã®TypeScriptã¹ã¿ããééã§ããªããšæããŸãã
ããã«ã¯ã_Suggestion_ã§ã¯ãªã_Bug_ãšããã©ãã«ãä»ããå¿ èŠããããŸãã
ã³ãŒãããã²ãŒã·ã§ã³ã®æ¬ åŠã¯ãJavaScriptéçºè ã®VSCodeãšã¯ã¹ããªãšã³ã¹ãå®éã«å°ç¡ãã«ããŸãã
ã¹ã¬ãããã¹ãã ããŠç³ãèš³ãããŸãããã @ promatyç§ã¯ä»ã®ãšããsearch-node-modulesæ¡åŒµæ©èœã䜿çšããŠã
WebStormã®åäœã¯åãã§ãïŒ StackOverflow ã BugTracker
VSCodeã«ã¯ãå®çŸ©ã«ç§»åãããã³ãã¿ã€ãå®çŸ©ã«ç§»åãã¢ã¯ã·ã§ã³ããããŸã
WebStormã«ã¯ããGoToDeclarationãã¢ã¯ã·ã§ã³ãšãGoToTypeDeclarationãã¢ã¯ã·ã§ã³ããããŸãã
ãã ããTypeScriptã䜿çšããå Žåãäž¡æ¹ã®IDEã¯åãããšãè¡ããŸããåžžã«åå®çŸ©ã«ç§»åããŠãã ããã
ãå®çŸ©ã«ç§»åããšãã¿ã€ãå®çŸ©ã«ç§»åããnode_modules/
ã©ã€ãã©ãªã§äœ¿çšãããšãã©ã¡ãã.d.ts
ãã¡ã€ã«ã«ç§»åããŸãã ç§ã¯å·çæç¹ã§ææ°ã®VSCodeïŒ1.34.0ïŒã䜿çšããŠããŸãã
äŸïŒnpmããã±ãŒãž@angular/[email protected]
ã TestBed
ãã@angular/core/testing
TestBed
ãã€ã³ããŒãããŠã TestBed.createComponent
ã®å®çŸ©ã確èªããããšãããšã2ã€ã®ç°ãªããã®ãåŸãããŸãã
node_modules/@angular/core/testing/src/test_bed_common.d.ts
è¡117node_modules/@angular/core/testing/src/component_fixture.d.ts
14è¡ç®ããã¯åºæ¬çã«ãAngularãœãŒã¹ã³ãŒããVSCodeã§ç§ããé ãããŠããããšãæå³ããŸãðãããAngularã©ã€ãã©ãªã®èšè¿°æ¹æ³ã®çç¶ãªã®ããTypeScript / VSCodeããœãŒã¹å®è£ ãèŠã€ããæ¹æ³ã®çç¶ãªã®ãããããŸããã
ç§ãç¥ã£ãŠããã®ã¯ãèªåã®ã³ãŒãã§ãå®çŸ©ã«ç§»åããšãã¿ã€ãå®çŸ©ã«ç§»åãã確å®ã«äœ¿çšããããšããã§ããªããšããããšã ãã§ãããã®å ŽåããœãŒã¹ã«çŽæ¥ç§»åããŸãã èªåã®ã³ãŒãã®.d.ts
ãã¡ã€ã«ã衚瀺ãããããšã¯ãããŸããã
ä»ã®ãšããããœãŒã¹ã³ãŒããæåã§æ€çŽ¢ããå¿ èŠããããŸãïŒ/
ãããTypescript 3.0.1ã䜿çšããŠåããããžã§ã¯ãã«åå ããŠããŠããIntellijIDEAããã®é¢æ°ãæ¬åœã«ããŸãæ©èœãããŠããããšãããããŸããã
ãã®åé¡ã®åªå é äœãäžããå¿ èŠããããšæããŸããã
+ ,
ãã³ãã³ãããŠã¯ãŒã¯ã¹ããŒã¹èšå®ãéãå¿
èŠããããŸã-> Use Ignore Files
ãã§ãã¯ãå€ããŸã-> Search: Exclude: **/node_modules
åé€ããæåã§ãœãŒã¹ã³ãŒããæ€çŽ¢ããŸãã
æ¯æ¥ïŒ
ãã®ããã flow
ã¯äŸç¶ãšããŠæçšã§ãã
typescriptããŒã ã®èª°ãããã³ãŒãã®ã©ãã§ãããä¿®æ£ã§ããå¯èœæ§ãããããææ¡ã§ããŸããïŒ
é¢çœãããšã«ãäžéšã®ããã±ãŒãžã«äœ¿çšå¯èœãªã¿ã€ãããªãå Žåã¯ããã¿ã€ãå®çŸ©ã«ç§»åãã®æ¹ãå®éã«ããŸãæ©èœããŸãã ã移åãæ©èœã奜ããªå Žåã¯ãã¿ã€ãã³ã°ã䜿çšããªãæ¹ãããããšãæå³ããŸãð
ããã¯ãã¿ã€ãã³ã°ã®ãªãdevice
ããã±ãŒãžã®å®çŸ©ã«ç§»åã§ããããšã瀺ãã¹ã¯ãªãŒã³ãã£ã¹ãã§ããã compression
ã¯ã©ã³ãã ãªã¿ã€ãã³ã°ãã¡ã€ã«ã«ã€ãªãããŸãã
https://giphy.com/gifs/j3VCp0LVKr5LsMUh11
@RyanCavanaughç§ã¯ä»ã®äººã«åæããå¿ èŠããããŸããããã¯ææ¡ã§ã¯ãªããã°ãšããŠã©ãã«ä»ãããå¿ èŠããããŸãã
ç§ã®å Žåãèªåã®ã³ãŒãã§ãã®ãããªãã®ãå®çŸ©ããŠããå Žå
const Foo: <T> = () => {
...
}
Tãnpmã¢ãžã¥ãŒã«ããã®ãã®ã§ããå Žåãå®çŸ©ã«ç§»åããããšãããšã2ã€ã®å®çŸ©ã衚瀺ãããŸãã ç§èªèº«ã®ã³ãŒããšã¿ã€ãã³ã°ã®å®çŸ©ã ã¿ã€ãå®çŸ©ã«ç§»åãããšãå®çŸ©ãã¡ã€ã«ã«çŽæ¥ç§»åããŸãã
æåã®ã±ãŒã¹ã§ã¯ãå®çŸ©ã«çŽæ¥é²ãå¿
èŠããããŸãã
ãããåé¿ããããã«ããšãã£ã¿ãŒ-> goto locationïŒmultipleãgoto
ã§ã¯ãªãpeek
ãã®æ©èœãå¿ èŠã§ãã ã©ãããã°ãã®å®è£ ãæäŒãããšãã§ããŸããïŒ
+1ããŠãã ããïŒ
2015幎以éã解決çã¯ãããŸãã:(
OPã¯ãç§ãã¡ãè¡ãããšãã§ãããã©ãããå°ãããã.ts
ç§ãã¡ãèŠã€ãããšãã«ããã¡ã€ã«.d.ts
ããªããåºè·ããå Žå-ãã¡ã€ã«ã.ts
ã§ãã¡ã€ã«ã.d.ts
ãã¡ã€ã«ãšå®£èš--declarationMaps
ã«ãã£ãŠçæããããããããããçŸåšã®åäœã§ãïŒããã§ããªãå®äºã§ãïŒã ããã§è¿œè·¡ããŠãããã®ã¹ã¬ããã®_second_ãªã¯ãšã¹ãã¯ãåºå.js
ãã¡ã€ã«ã«ç§»åãããªãã·ã§ã³ã§ãïŒããšãã°ã .ts
ãœãŒã¹ããªãå Žåã«äŸ¿å©ã§ãã tåºè·æžã¿ïŒã å®è£
ã«é¢ããŠã¯ãããã¯ãã§ã«å
¬éããŠãã宣èšãœãŒã¹ããããšjavascriptãœãŒã¹ããããçµã¿åãããã ãã®åé¡ã§ããããŸã 決å®ããŠããªãã®ã¯ããã®ãããªæ©èœãã©ã®ããã«è¡šç€ºãããã§ãã tsã³ãŒãã®Go to implementation
ã¯ãã»ãšãã©ã®ã³ãŒãã§ãã§ã«æçšãªæå³ãæã£ãŠããŸãïŒããã¯å®çŸ©ã«è¡ããŸãããå®è£
/å€ã®å®£èšã奜ã¿ãŸãïŒ...äœããã®æ¹æ³ã§ãããä¿®æ£ããŸããïŒããšãã°ã宣èšã«è§£æ±ºããå ŽåïŒãã¡ã€ã«ã代ããã«jsãã¡ã€ã«ã«è§£æ±ºããŠã¿ãŠãã ããïŒããŸãã¯æ°ãããšã³ããã€ã³ããè¿œå ããŸããïŒ åŸè
ã®å Žåã¯ãvscodeããŒã ãšã©ã®ããã«ãããè¡šé¢åãããã«ã€ããŠè©±ãåãå¿
èŠããããŸãã
@DanielRosenwasseræ£çŽãªãšãããããã§æ¬åœã«å¿ èŠãªã®ã¯ããã®ãããªãã®ãã©ã®ããã«å ¬éããããã«ã€ããŠã®ããå ·äœçãªèª¬æã§ãããããè¡ãããã®ããŒã«ãçšæãããŠããŸãã
vscodeããŒã ã®ã³ãŒããŒã¯ããããã©ã®ããã«å®è£
ãããã«ã€ããŠã®ã¢ã€ãã¢ãææ¡ã§ããŸããããšãã°ã Go to js implementation
ãªã©ã§ããæåã®è¯ãã¹ãããã¯ãvscode Issue Trackerã§ãã±ãããäœæãããã®ãã±ãããçžäºåç
§ããŠãã³ãã¥ãã±ãŒã·ã§ã³ãã§ããããã«ããããšã§ããå§ããã
ç§ã®ç解ã§ã¯ãããã«ã¯ããã€ãã®é¢é£ããåé¡ããããŸãã ïŒ1ïŒã¯å€§ããªãã®ã§ãããä»ã®ããšã念é ã«çœ®ãå¿
èŠããããŸãã
1ïŒTSã¿ã€ããDefinitelyTypedããã±ãŒãžã§å®£èšãããŠããå Žåããã®ã¿ã€ãã®JSãŸãã¯TSå®è£
ã«ç§»åããç°¡åãªæ¹æ³ã¯ãããŸããã ïŒãŸãã¯.d.tsãå®è£
ãšåãå Žæã«é
眮ãããŠããªããã®ä»ã®å ŽåïŒ
2ïŒéžæèªäœãã¿ã€ãã®å Žåã[ã¿ã€ãå®çŸ©ã«ç§»å]ã¯æ©èœããŸããã ãã¿ã€ãå®çŸ©ãèŠã€ãããŸããããšãããšã©ãŒã衚瀺ãããŸãã
3ïŒã¿ã€ã以å€ã®èå¥åã®[å®çŸ©ã«ç§»å]ã®åäœã«äžè²«æ§ããããŸããã å®è£
ã«ç§»åããå Žåãããã°ã移åããªãå ŽåããããŸãã çè«çã«ã¯ïŒ1ïŒãšåãã§ããããã®ççŸãæ®ãããŸãŸïŒ1ïŒã解ãããšãå¯èœã§ãã
3çªç®ã®ã移åãã¡ãã¥ãŒãªãã·ã§ã³ãè¿œå ããã«ããŠãŒã¶ãŒã3ã€ã®åé¡ãã¹ãŠã解決ããæ¹ãç°¡åã ãšæããŸãã 代ããã«ãç§ã®ææ¡ã¯2ã€ã®ã¡ãã¥ãŒé ç®ã®ã¿ãä¿æããããããããäžè²«ããŠåäœãããããšã§ãã
3çªç®ã®éžæè¢ãå¿ èŠãšããä»ã®äžè¬çãªTSãŠãŒã¹ã±ãŒã¹ã¯ãããŸããïŒ
ãšããã§ãåºå¥ãæ確ã«ãããå Žåã¯ããå®çŸ©ã«ç§»åãã®ååããå®è£ ã«ç§»åãã«å€æŽã§ãããšæããŸãããç§èŠã§ã¯ãããã¯ãªãã·ã§ã³ã®å€æŽã®ããã§ãã äžè²«æ§ïŒååã«é¢ä¿ãªãïŒã¯äžäœãããã§ãã
ãã®åãDefinitelyTypedããã±ãŒãžã§å®£èšãããŠããå ŽåãTSåã®JSãŸãã¯TSå®è£ ã«ç§»åããç°¡åãªæ¹æ³ã¯ãããŸããã ïŒãŸãã¯.d.tsãå®è£ ãšåãå Žæã«é 眮ãããŠããªããã®ä»ã®å ŽåïŒ
_æè¡çã«_DTããã±ãŒãžã«åãããŠããã€ãã®ãœãŒã¹ããããæåã§ã¹ãã³ãããå Žåã¯ããã§ã«ããŸãããå¯èœæ§ããããŸãã ããããããã«ã¯èªååããããœãªã¥ãŒã·ã§ã³ã¯çµ¶å¯Ÿã«ãããŸããã ç§ãã¡ãæã£ãŠãã解決çã¯ãTSã³ã³ãã€ã©ã®åºåãå«ãã·ããªãªã®æ¹åã«åºã¥ããŠããŸãããããã¯ããã¡ã€ã«éã®æ£ããé¢é£ä»ããè¡ãããã«å¿
èŠãªè¿œå ã®ã¡ã¿ããŒã¿ãåé€ã§ããå¯äžã®å Žåã§ãã ããã€ãã®ããã±ãŒãžã¯ä»æ¥ããããµããŒãããŠãããšç§ã¯ä¿¡ããŠããŸã-ç§ã¯å
æ¥azurejs sdkã䜿çšããŠããã€ãã®ãã®ããããã°ããŠããŸããããããã€ãã®å®çŸ©ã«è¡ã£ãŠããããå
ã®ãœãŒã¹ã«ããããšãçºèŠãããšãã¯å¬ããé©ãã§ããã ããã§ãããææ°ã®--declarationMaps
åºåããã³ãã«ãããŠããTSãœãŒã¹ã§åäœããŸãã
éžæèªäœãã¿ã€ãã®å Žåããã¿ã€ãå®çŸ©ã«ç§»åãã¯æ©èœããŸããã ãã¿ã€ãå®çŸ©ãèŠã€ãããŸããããšãããšã©ãŒã衚瀺ãããŸãã
ç§ã¯ããªãããã®åé¡ã«ã€ããŠæ°ããåé¡ãéãã¹ãã ãšæããŸãã ããã¯ãexepections / bugãimoã®å€±æã«ãããŸããã æäœéããšã©ãŒãæ¹åããããšãã§ããŸããããšãã°ããéžæã¯åã®ã¿ã§ããããããã®å€ã«é¢é£ä»ããããåå®çŸ©ã¯ãããŸããããªã©ã§ãã
éåèå¥åã®ãå®çŸ©ã«ç§»åãã®åäœã«äžè²«æ§ããããŸããã å®è£ ã«ç§»åããå Žåãããã°ã移åããªãå ŽåããããŸãã çè«çã«ã¯ïŒ1ïŒãšåãã§ããããã®ççŸãæ®ãããŸãŸïŒ1ïŒã解ãããšãå¯èœã§ãã
ããã¯_first_å®çŸ©ã«è¡ããŸããfirstã¯ããªãæ£æçã§ã泚æãã¡ã€ã«ãããŒãããããããªãã®ã«åºã¥ããŠããŸãã peek
ãŠã£ã³ããŠã¯ãã¹ãŠã®å®çŸ©ãµã€ãã衚瀺ããã®ã§ã確ãã«ãã£ãšäŸ¿å©ã§ãã ãå®è£
ãã¯æ©èœããŸããã
ãŠãŒã¶ãŒãšããŠã次ã®ããã«æ©èœããã°æºè¶³ããŸãã
CtrlããŒãæŒããªããã·ã³ãã«ãã¯ãªãã¯ãããšïŒã»ãšãã©ã®å Žåãã³ãŒããããã²ãŒãããããã«ããã®ã¿ã䜿çšããŸãïŒãçŸåšãå®è£ ïŒVS Codeã§ç·šéãããŠããããã±ãŒãžå ã«ããå ŽåïŒãŸãã¯å®£èšïŒäŸåé¢ä¿ããã®ããã±ãŒãžã®å ŽåïŒã®ããããã«ãªããŸãã ã æåã®ãã®ã¯èæ ®ãå¿ èŠãšããŸããã 2ã€ç®ã¯ã宣èšã«ç§»åãããšãã«ãCtrlããŒãæŒããªãã宣èšãã¯ãªãã¯ãããšãå®è£ ãèŠã€ãã£ãŠããŠã³ããŒãããŠéãããšãã§ããå Žåã¯ãå®è£ ã«ç§»åããŸãã ãã以å€ã®å Žåã¯ãã©ã®åé¡ããœãŒã¹ã®æ€åº/ãªãŒãã³ã劚ããŠããããšããã¡ãã»ãŒãžã衚瀺ãããŸãã ããããã®ããã«æ©èœããå Žåãããã¯çŽ æŽãããã§ãããã
å ã®ãœãŒã¹ã³ãŒããèŠã€ããã«ã¯ã次ã®ã·ããªãªããããšæããŸãã
d.ts
js
ãã¡ã€ã«ãšd.ts
ã js
ãããã³ts
ãã¡ã€ã«ãå«ãŸããŸãd.ts
ããã³js
ãã¡ã€ã«ãå«ãŸããŸãd.ts
js
ãã¡ã€ã«ãšjs
ãã¡ã€ã«ã®ã¿ãå«ãŸããå€éšã®@types
å®çŸ©ã䜿çšãããŸãd.ts
js
ãã¡ã€ã«ãš1bïŒ-䜿çšãããããšã¯ãã£ãã«ãããŸãããbundlephobiaãnpmãã¬ã³ããªã©ã®ãªãœãŒã¹ã¯ãå®è¡æã«ããã»ã©å€§ãããªã巚倧ãªããã±ãŒãžãµã€ãºãå ±åããããããã®ã¢ãããŒãã¯å¥œãã§ã¯ãããŸãããã人ã
ã¯ãããã®ãªãœãŒã¹ã«åºã¥ããŠãµã€ãºãå€æããŸãã ãããã£ãŠããã£ã¹ããªãã¥ãŒã·ã§ã³ã«ts
ãã¡ã€ã«ãå«ããããšãã¡ã³ããã«äŸåããããšã¯ãå§ãã§ããŸãããã ts
ãã¡ã€ã«ãå«ãŸããŠããã°ãåé¡ã¯è§£æ±ºããŸãã
1aïŒ-ïŒã»ãšãã©ïŒïŒé »ç¹ãªã±ãŒã¹ã ããã±ãŒãžã¯ãã³ã³ãã€ã«æã«å
ã®ãœãŒã¹ãã©ãã«ãã£ããïŒmicrosoft pdb
ã·ã³ãã«ãã¡ã€ã«ã宣èšãããªã©ïŒããŸãã¯git + Revision +ãªã©ããããŠã³ããŒãã§ããå ŽæãïŒpackage.jsonãŸãã¯ãœãŒã¹ããããä»ããŠïŒäœããã®æ¹æ³ã§å®£èšããå¿
èŠããããŸããéã VSã³ãŒãã¯ãããŒã«ã«ãã¡ã€ã«ã«ç§»åãããã git fetch
ãããŒã«ã«ãã£ãã·ã¥ã«ç§»åãã宣èšããå®è£
ãŸã§ã®ããã²ãŒã·ã§ã³ã§éããŸãã
2aïŒ-ã¢ãã¬ããžããªã®ã±ãŒã¹ãèªåçã«æ€åºã§ããå ŽåïŒããã€ãã®ãã¥ãŒãªã¹ãã£ãã¯ã䜿çšïŒãå ã®Ctrl + Clickããã²ãŒã·ã§ã³ã§å®è£ ãçŽæ¥éãããšãã§ããŸãã äžå¯èœãªå Žåã¯ã1aïŒãžã®ãã©ãŒã«ããã¯ã§ååã§ãã
ç§ã¯3ã«ã€ããŠã¯ããŸãæ°ã«ããŸãããã3aïŒã2çªç®ã®Ctrl + Clickããã²ãŒã·ã§ã³ã§JSå®è£
ãéãããšãã§ããã°ããã®ã§ããã 3bïŒã®å Žåã @types
ããã±ãŒãžã¯ã泚éãä»ããJSããã±ãŒãžã宣èšããå¿
èŠããããããVSã³ãŒãã¯ãå€éšããã±ãŒãžã®JSå®è£
ã«ç§»åããããã«ãã®æ
å ±ãæã€ããšãã§ããŸãã
ç§ã¯4ã«ã€ããŠã¯ãã£ãšæ°ã«ããŸãããã2aïŒãšåãåäœãããå¯èœæ§ããããŸã-4aïŒã®ãã©ãŒã«ããã¯ã¯3aïŒã§ã
ããã圹ã«ç«ãŠã°å¹žãã
1aïŒ-ïŒã»ãšãã©ïŒïŒé »ç¹ãªã±ãŒã¹ã
ãããããã¯ç§ãã¡ãä»ãµããŒãããããã®ãã¹ãŠã®ããŒã«ãæã£ãŠãããšç§ãèšã£ãŠããããšã§ãã .js.map
ãã¡ã€ã«ãš.d.ts.map
ãã¡ã€ã«ãçµã¿åãããŠã .d.ts
ãã.js
ãžã®ãããã³ã°ãäœæã§ããŸãïŒäžéã®.ts
ïŒã ããããããŒãã æ¬åœã«ã宣èšãã¡ã€ã«ã«ç§»åããŠãããããäžåºŠå¯Ÿè©±ããŠé¢é£ããjsã«ç§»åãããã§ããïŒ jsã«çŽæ¥ãžã£ã³ãããããªãã§ããïŒ
ãæ¬åœã«ã宣èšãã¡ã€ã«ã«ç§»åããŠãããããäžåºŠå¯Ÿè©±ããŠé¢é£ããjsã«ç§»åãããã§ããïŒjsã«çŽæ¥ãžã£ã³ãããããªãã§ããïŒã
1aïŒã®å Žåãããã«ãžã£ã³ãã§ãã·ã³ã°ã«ãžã£ã³ãã§ãæ§ããŸããã ã·ã³ã°ã«ãžã£ã³ãã¯ãããå¹ççããšèŠãªãããšãã§ããŸãããããã«ãžã£ã³ãã«ã¯ã2çªç®ã®ãžã£ã³ãããã©ã€ãã©ãªæ¶è²»ãã®èŠ³ç¹ãããã©ãã¯ããã¯ã¹ãžã®ãžã£ã³ãã§ããããšããŠãŒã¶ãŒã«ãæãåºãããããšããå©ç¹ããããŸãïŒã€ãŸãããœãŒã¹ãããã²ãŒãå ã®ãã¡ã€ã«ã¯çŸåšã®ãããžã§ã¯ãã®äžéšã§ã¯ãããŸããïŒã ãã¶ãããã®æ¯ãèãã¯èšå®å¯èœã«ããããšãã§ããŸãã
3aïŒã3bïŒãŸãã¯4ã®å Žåãç§ã¯ç¢ºãã«ããã«ãžã£ã³ã
ïŒè€æ°ã®æçš¿ããã®@weswighamãš@avkonstãžã®è¿ä¿¡ãçµã¿åãããïŒ
ããã¯æåã®å®çŸ©ã«è¡ããŸããæåã®å®çŸ©ã¯ããªãæ£æçã§ããããã¡ã€ã«ãããŒããããé åºãªã©ã«åºã¥ããŠããŸãã
ç¹å®ã®ã€ã³ããŒããããã·ã³ãã«ã®å®è£ ã«ç§»åããæãäžè¬çãªã±ãŒã¹ã§ã¯ããªãè€æ°ã®å®çŸ©ãããã®ã§ããããã ããã¯äžè¬çãªç¶æ³ã§ããïŒ
.d.tsãã.jsãžã®ãããã³ã°ãçæããŸãïŒäžéã®.tsãªãïŒã
ãäžéTSãªãããããããªãã å ã®.tsãœãŒã¹ãå©çšå¯èœã§ãã£ãŠããVSCodeã¯å€æããã.jsã«ç§»åãããšããããšã§ããïŒ ããã¯æªãèãã®ããã§ãã å ã®ãœãŒã¹ãå©çšå¯èœãªå ŽåãVSCodeã¯ããããã¬ãŒããœãŒã¹ããããæã€ãã©ã³ã¹ãã€ã«ãããã³ãŒãã«ã¹ãããã€ã³ãããšããšåãããã«ãããã«ããã²ãŒãããå¿ èŠããããŸãã ãšã¯ãããããã±ãŒãžã®äœæè ãæªæã®ããããŸãã¯æ æ°ã§ãå ã®TSãœãŒã¹ãnpmãã£ã¹ããªãã¥ãŒã·ã§ã³ã«å«ããªãã£ãå ŽåãVSCodeããã©ã³ã¹ãã€ã«ãããJSã«ãã©ãŒã«ããã¯ãããŠãŒã¶ãŒã«è¡šç€ºãããŠããçç±ã説æããèŠåã¡ãã»ãŒãžã衚瀺ããã®ã劥åœãšæãããŸãããã®ãããªå¥åŠã§èªããªãã³ãŒããšããŠãŒã¶ãŒãããã±ãŒãžã®äœæè ã«å ã®ãœãŒã¹ãããã±ãŒãžã«å«ããããã«ä¿ãããšã
æ¬åœã«ã宣èšãã¡ã€ã«ã«ç§»åããŠãããããäžåºŠå¯Ÿè©±ããŠé¢é£ããjsã«ç§»åãããã§ããïŒ jsã«çŽæ¥ãžã£ã³ãããããªãã§ããïŒ
2ã€ã®ã¹ãããã§ä»å 䟡å€ãçãŸãããšã¯æããŸããã æ確ã§äžè²«æ§ã®ããUXã䜿çšããæ¹ãã¯ããã«è¯ããšæããŸãããã¿ã€ãå®çŸ©ã«ç§»åãã䜿çšããŠã¿ã€ãå®çŸ©ã«ç§»åããå®çŸ©ã«ç§»åïŒãŸãã¯å®è£ ã«ç§»å-ç§ãã¡ãéžæãããã®ïŒã䜿çšããŠå ã®å®çŸ©ã«ç§»åããŸããœãŒã¹ã³ãŒãããŸãã¯äžèšã®ããã«ãå ã®ãœãŒã¹ãå©çšã§ããªãå Žåã¯ããã©ã³ã¹ãã€ã«ãããJSã«ã
ç§èŠã§ãããéžæããã·ã³ãã«ãç¬èªã®ã³ãŒãã§å®çŸ©ãããŠããããnode_modulesã§å®çŸ©ãããŠãããã«ãã£ãŠãåäœãç°ãªããšãã¯ããã«æ··ä¹±ããŸãã ããã¯åé¡ã§ã¯ãªãã¯ãã§ãã ã¿ã€ãã確èªãããå Žåã¯ãVSCodeã§ã¿ã€ãã確èªããå¿ èŠããããŸãã å®è£ ã³ãŒããèŠããå Žåã¯ãVSCodeãç§ãããã«é£ããŠè¡ã£ãŠãããã¯ãã§ãã ããã¯ç¹ã«åœãŠã¯ãŸããŸãã倧èŠæš¡ãªçµç¹ã§ã¯ãããã€ã³ãŒãããšãã©ã€ãã©ãªã³ãŒãããåžžã«æããç·ã§ãããšã¯éããªãããã§ãã ä»ã®èª°ããã³ãŒããå ±æå éšããã±ãŒãžã«ãªãã¡ã¯ã¿ãªã³ã°ããå Žåããã®ã³ãŒããžã®ç§»åæ¹æ³ãå€æŽããå¿ èŠã¯ãããŸããã
ç§ã¯æåã«å®£èšã確èªãããã®åŸïŒãããã°ãªã©ã®éåžžã«ãŸããªã±ãŒã¹ã§ããïŒå®è£ ã確èªããããšæããŸãã
éçºè ã«ãå宣èšã衚瀺ããããå®è£ ã³ãŒãã衚瀺ããããæ瀺çã«ïŒ1ã€ã®ã¡ãã¥ãŒé ç®ãŸãã¯å¥ã®ã¡ãã¥ãŒé ç®ãéžæããŠïŒéžæããããã«èŠæ±ããæ¹ãæ確ãªããã§ãã ã³ãŒãã®åºæã«ãã£ãŠããã²ãŒã·ã§ã³ã«äžè²«æ§ããªãããšã¯ãäžå¿ èŠã«æ··ä¹±ããŠããããã«æãããŸãã
>éžæèªäœãã¿ã€ãã®å Žåã[ã¿ã€ãå®çŸ©ã«ç§»å]ã¯æ©èœããŸããã
ç§ã¯ããªãããã®åé¡ã«ã€ããŠæ°ããåé¡ãéãã¹ãã ãšæããŸãã ããã¯ãexepections / bugãimoã®å€±æã«ãããŸããã
ã¯ããããã¯ééããªãæåã«ä¿®æ£ã§ããŸãã ç§ã®å¥œã¿ã®ãœãªã¥ãŒã·ã§ã³ïŒãå®çŸ©ã«ç§»åã¯åžžã«å®è£ ã«ç§»åãããïŒãæ¡çšãããå ŽåããŠãŒã¶ãŒã¯.d.tsã衚瀺ããããšãã«ãã€ã§ãã¿ã€ãå®çŸ©ã«ç§»åã䜿çšããç¿æ £ããããããããã«å«ããŸãããåã«å¯ŸããŠãããè¡ãããšããå以å€ã®èå¥åã«å¯ŸããŠã©ã®ããã«æ©èœããããšäžè²«ããŠæ©èœããªãã£ãå Žåãå¥åŠã«ãªããŸãã
ãæåã®å®çŸ©ã«è¡ããŸããæåã®å®çŸ©ã¯ããªãæ£æçã§ã泚æãã¡ã€ã«ãããŒãããããããªãã®ã«åºã¥ããŠããŸããã
æåã®å®çŸ©ã«ç§»åããå¿ èŠãããããšã«ã€ããŠã¯ãè¿ä¿¡ã§èšåããŠããŸããã CtrlããŒãæŒããªããã·ã³ãã«ãã¯ãªãã¯ãããšããŸãå®çŸ©ã«ç§»åãïŒçŸåšã¯æ©èœããŠããããïŒããã®åŸã®CtrlããŒãæŒããªããã¯ãªãã¯ããŠå®è£ ã«ç§»åããå¿ èŠããããšè¿°ã¹ãŸããã
ãéçºè ãå宣èšã衚瀺ããããå®è£ ã³ãŒãã衚瀺ããããæ瀺çã«ïŒ1ã€ã®ã¡ãã¥ãŒé ç®ãŸãã¯å¥ã®ã¡ãã¥ãŒé ç®ãéžæããŠïŒéžæããããã«èŠæ±ããæ¹ãæ確ãªããã§ããã
åå¥ã®ã³ã³ããã¹ãã¡ãã¥ãŒãçšæããããšããå§ãããŸãã ãããã¯ãCtrl + Clickã®åäœã«å¯ŸããŠçžäºã«æä»çã§ã¯ãããŸããã
ãã®é倧ãªãã°ããŸã åŠçãããŠããªãã®ã¯ãªãã ãããã ã¿ã€ãã¹ã¯ãªããã®æ¡çšãå¢ããã«ã€ããããã¯ãå°»ã®çã¿ã«ãªãã€ã€ãããŸãã
æè¡çãªèª¬æã¯èããããããŸãããããŸããŸãªãŠãŒã¶ãŒã«ã€ããŠå€ãã®èª¬æãããåŸã§ãããã®åé¡ãèªèãããªãçç±ãç¥ãããã®ã§ãã
@zjamlã¯ãTypeScriptãœãŒã¹ãã¡ã€ã«ãŸãã¯JavaScriptãœãŒã¹ãã¡ã€ã«ã«ç§»åããŸããïŒ TypeScriptãœãŒã¹ãã¡ã€ã«ããµããŒããããŠããŸãã ãã®åé¡ãçŸåšãéãããŠããã®ã¯JavaScriptãœãŒã¹ãã¡ã€ã«ã§ãã
æ¥ç·æ¹åã«é¢é£ããŠããŸãã npmã«å ¬éãããŠããå ±éããã±ãŒãžã®ã¢ãã¬ãããããŸãã ãã®ãããªãã¯ã€ã³ã¿ãŒãã§ã€ã¹ã®ãããdistã¯js + d.tsãã¡ã€ã«ã§ãã ãªããžããªã§äœæ¥ããŠãããšããVSCodeã¯åžžã«ãœãŒã¹ã§ã¯ãªãd.tsã«ãžã£ã³ãããŸãã ãããåé¿ããæ¹æ³ãç¥ã£ãŠããŸããïŒ
@ 0x80ãã®åé¡ã¯ãä»èª¬æããã·ããªãªã§ã¯ãŸã éããŠãããšæããŸãã ãããåé¿ã§ããå¯äžã®æ¹æ³ã¯ããããžã§ã¯ãããªãŒãã³ãœãŒã¹ã§ãããtypescriptãœãŒã¹ããã³ã³ãã€ã«ããå Žåã§ãã 次ã«ãtypescriptã³ã³ãã€ã©ã®--declarationMapsãã©ã°ããªã³ã«ãããšã宣èšãããããµããŒãããIDEã¯ãd.tsãã¡ã€ã«ã§ã¯ãªãtypescriptãœãŒã¹ã«ç§»åããŸãã
ããã¯æ¬åœã«éèŠã§ãã ç°¡åãªããšããããïŒCTLR +ã¯ãªãã¯ããŠnode_modules / library /source.jsãŸãã¯source.tsãã¡ã€ã«ã«ç§»åããŸãã 60åã®node_modulesäŸåé¢ä¿ãæã€ãªãŒãã³ãœãŒã¹ãããžã§ã¯ãããšã¯ã¹ãããŒã©ãŒã§ã¡ã¢åž³ã䜿çšããããã«ãªããŸããã
ã³ã³ããŒãã³ããå³ã¯ãªãã¯ãããšããå®çŸ©ã«ç§»åããšãã¿ã€ãå®çŸ©ã«ç§»åãã衚瀺ãããŸããã ãçŽ æŽããããããã¯ããŸãèšèšãããŠãããç§ã®åé¡ã®è§£æ±ºçã¯ããã«ããïŒããšæããŸããã 次ã«ããå®çŸ©ã«ç§»åããã¯ãªãã¯ããŠãã¿ã€ãå®çŸ©ã«ç§»åããŸããã
ããã¯æ¬åœã«éèŠã§ãã ç°¡åãªããšããããïŒCTLR +ã¯ãªãã¯ããŠnode_modules / library /source.jsãŸãã¯source.tsãã¡ã€ã«ã«ç§»åããŸãã 60åã®node_modulesäŸåé¢ä¿ãæã€ãªãŒãã³ãœãŒã¹ãããžã§ã¯ãããšã¯ã¹ãããŒã©ãŒã§ã¡ã¢åž³ã䜿çšããããã«ãªããŸããã
+1
åãå¿
èŠæ§ã
æ¬æãè¡šããŠããããå®è£
ãããŠããªããšããäºå®ã¯ä¿¡ããããªãã»ã©ã§ãã ãã®ãããªåºæ¬çãªãæ¯èŒçç°¡åã«
人ã
ã®æéã倧å¹
ã«ç¯çŽããæ©èœãæ§ç¯ããŸãã
æ¬æãè¡šããŠããããå®è£ ãããŠããªããšããäºå®ã¯ä¿¡ããããªãã»ã©ã§ãã ãã®ãããªåºæ¬çãªãæ¯èŒçç°¡åã«
人ã ã®æéãå€§å¹ ã«ç¯çŽããæ©èœãæ§ç¯ããŸãã
+1
ããŠããã®æ©èœããŸã å©çšã§ããªãéãnode_moduleså
šäœãæ€çŽ¢ãã以å€ã«ãã£ãšè¯ãåé¿çã¯ãããŸããïŒ æ¬åœã«äžäŸ¿ã§ã...
ããšãã°ãå®çŸ©ã«ç§»åãããšãå¿
èŠãªãã®ãå®éã«node_modules/@com.abc/sample/src/core/internal/abc.ts
ã«ãããšãã«ã node_modules/@com.abc/sample/lib/core/internal/abc.d.ts
ã«ãªããŸããã
@ Happin3ss
node_moduleså šäœãæ€çŽ¢ãã以å€ã«ãããè¯ãåé¿çã¯ãããŸããïŒ
çŸåšã®ãœãªã¥ãŒã·ã§ã³AFAIKã¯ã宣èšãããã§ãã ãããã¯ã.d.tsãã¡ã€ã«ã察å¿ããTSãœãŒã¹ã«ããããããœãŒã¹ãããã§ãã äŸåããŠããã©ã€ãã©ãªã«å®£èšããããå®è£ ããããã«èª¬åŸã§ããã°ïŒ@typesã«äŸåããã®ã§ã¯ãªããã©ã€ãã©ãªããã±ãŒãžå ã«.d.tsãå ¬éããå¿ èŠããããšæããŸãïŒãã¯ã©ã€ã¢ã³ãã³ãŒãããèªåçã«ãžã£ã³ãã§ããŸããå ã®TSïŒãŸãã¯JSã§TSã³ã³ãã€ã©ã䜿çšããŠããå Žåã¯JSïŒïŒãœãŒã¹ã³ãŒãã«ã
ç§ãè¡ã£ãŠããã®ã¯ãæãéèŠãªäŸåé¢ä¿ïŒå°ãªããšããTSã§äœæãããäŸåé¢ä¿ïŒã«å¯ŸããŠPRãåŸã ã«æåºããŠã宣èšããããè¿œå ããããã«ããããšã§ãã
æããã«ãã©ã€ãã©ãªãå€æŽããå¿ èŠããªãæ¹ãããã§ãããã
å¥ã®åé¿çïŒã©ã€ãã©ãªãå€æŽã§ããªãå ŽåïŒã¯ãã©ã€ãã©ãªãããã±ãŒãžå
ã«.d.tsããã³ãã«ããŠãããã宣èšãããããªãå Žåã«æ©èœããŸãã ãã®å Žåã¯ã[å®çŸ©ã«ç§»å]ã䜿çšããŠå宣èšãååŸããVSCodeã®[ãšã¯ã¹ãããŒã©ãŒ]ãã¿ã³ãã¯ãªãã¯ããŠãã©ã«ããŒã®ãµã€ãããŒã衚瀺ããŸãã ããã«ãããéåžžãããã±ãŒãžã®src
ãã©ã«ããŒã«éåžžã«è¿ã¥ãããããã¹ãŠã®node_modulesãæ€çŽ¢ãã代ããã«ãé©åãªãã©ã«ããŒãåç
§ããŠæ£ãããã¡ã€ã«ãéãããšãã§ããŸãã ããã¯ãæ確ãªãã¡ã€ã«ã®åœåãªã©ã«äŸåããŠãããäžèœè¬ã§ã¯ãããŸããã
100ïŒ æ確ã«ããããã«ãç¹ã«ã©ã€ãã©ãªã®ããè¯ããœãªã¥ãŒã·ã§ã³ãèŠã€ããããšæããŸãã .d.tsãããã±ãŒãžãšã¯å¥ã«äœæãããŠãããã®ã
èŠéãããã©ããã¯ããããŸãããããœãŒã¹ã宣èšã宣èšãããã®å®éã®æå°éã®äŸãäœãèµ·ãã£ãŠããã®ããç解ããã®ã«.d.ts
ãã¡ã€ã«ä»¥å€ã«ç§»åããã®ãèŠãããšããããŸããã ç°¡åãªäŸãäœæããããšããŸããããæ©èœããŸããã .d.ts.map
ãé£ã«ããã®ã«ãVS Codeã.d.ts
ãã¡ã€ã«ä»¥å€ã«ç§»åãããããšãã§ããŸããã ç§ã¯ãŸããç¡èŠããæ±ããŠããä»ã®èª°ããèŠã€ããŸããã
@types
ãããªå€éšã¿ã€ãã³ã°ããµããŒãããã®ã¯é£ããããšã¯ç解ã§ããŸããããããããŒãã¹ãã§ããæ©èœãããããšãã§ããªããšã¯ã©ãããæå³ã§ããïŒ
宣èšãã¡ã€ã«ãçæããã宣èšããããçæããªãã©ã€ãã©ãªã¯ãããããããããããæå¹ã«ããããã®åŒæ°ãäœã§ãããã¯äžæã§ãã ãã®ãªãã·ã§ã³ã¯æ確ãªèª¬æãªãã«è¿œå ãããŸãããå°ãªããšã1ã€ã¯ç§ãèŠã€ããããšãã§ããŸãã
ã¯ãã宣èšããããåé¡ã解決ããŠããªãããšã確èªããŸãã ç§ã®ãããžã§ã¯ãã«ã¯å®£èšãããããããŸãããvscodeã¯.d.tsãã¡ã€ã«ãè¶ ããŠããã²ãŒãããŸããã
ãããèµ·ãã£ãããã£ãšçŽ æŽãããã§ãããã
ms vscode devsã®åé¡ã®ãéšå±ã®äžã®è±¡ããããå Žåãããã¯ããã§ãã
ããã«é¢ããæŽæ°ã¯ãããŸããïŒ
JSããTSã«ç§»è¡ãããšãã倧ããªäžæ©ãèžã¿åºãããšã«ããŸããã ãäœãæªãã®ïŒããšæããŸããã ãããå®éã«ã¯ãããã¯VSCodeã®äºæããªãåäœã§ã
ããã«é¢ããæŽæ°ã¯ãããŸããïŒ
JSããTSã«ç§»è¡ãããšãã倧ããªäžæ©ãèžã¿åºãããšã«ããŸããã ãäœãæªãã®ïŒããšæããŸããã ãããå®éã«ã¯ãããã¯VSCodeã®äºæããªãåäœã§ã
ãã®æ¯ãèããæèµ·ãããŠä»¥æ¥ãé·ãæŽå²ããããŸããã ããŠãããã§ã¯äœãèµ·ãã£ãŠããŸããã ä»ã®ãšããèšç»ã¯ãããŸããã
ç§ã«ãšã£ãŠã¯ãvscodeããã®ãŸãŸäžçš®ã®ãšãã£ã¿ãŒãšããŠäœ¿çšãç¶ããŠãããã³ãŒãã£ã³ã°çšã®Intellij補åïŒIDEAïŒã¯ãããŸã奜ãã§ã¯ãããŸãããã䜿çšããŠããŸãã
5幎éãªãŒãã³ãã2025幎ã«ä¿®æ£ãããããšãé¡ã£ãŠããŸã
ïŒ39426ã§å€±æãããã¹ããäœæããŸããããå®è£ æ¹æ³ãããããŸãã
å®çŸ©ãèŠã€ããããã«æ¯æ¥å°çãééããtsdevããã®ã¡ããã©å¥ã®æšããªã³ã¡ã³ã
ããã¯ããããã§ã...ç§ã¯ãã ã®TSåå¿è ã ãšæã£ãŠããŸããããä»ç§ãåŸãŠããæ¯ãèãã¯å®éã«ã¯ãæšæºãã§ããããšãããããŸã???? ãšãŠãã€ã©ã€ã©ããã®ã§ãç§ã䜿çšããä»ã®ãã¹ãŠã®IDE /èšèªã¯ãæåã®ãªãªãŒã¹ã§ãããå®è£ ãããŠããŸã... :(ç§ã¯VSã³ãŒãã倧奜ãã§ãããæ£çŽãªãšãããããã¯ååŒã®ãã¬ãŒã«ãŒã«ãªãå¯èœæ§ããããŸã
Pythonæ¡åŒµæ©èœãåããVSCodeã®go to definition/implementation
æ©èœãããã€ãã£ãã®çµã¿èŸŒã¿ãœãªã¥ãŒã·ã§ã³ãåããJSãããåªããŠããïŒå°ãªããšãæ©èœããïŒçç±ã誰ãã説æã§ããŸããïŒ
ã§ã¯ãäœãèµ·ãã£ãŠããã®ã§ããããïŒ
cssã¢ãžã¥ãŒã«ã«scss.d.tsã䜿çšããŠããŸãããscssã«ãžã£ã³ãã§ããŸããã
ãŸããåçŽãª.jsãšããã«å¿ããŠd.tsãäœæããå Žåãjsã«çŽæ¥ãžã£ã³ãããããšã¯ã§ããŸãã
ãªããŠã§ãã¹ããŒã ã䜿çšããªãã®ã§ããïŒ
ããã¯ãã®åé¡ã解決ããããšãã§ããŸã!!!
ç§ã®ããŒãžã§ã³2020.1
ãªããŠã§ãã¹ããŒã ã䜿çšããªãã®ã§ããïŒ
ããã¯ãã®åé¡ã解決ããããšãã§ããŸã!!!
ç§ã®ããŒãžã§ã³2020.1
ãªãŒãã³ãœãŒã¹ãœãªã¥ãŒã·ã§ã³ã§ã¯ãªããç¡æã§ããªããã
ãããä¿®æ£ããŠãã ããã
ãã®åé¡ã¯ãMicrosoftã®äžéšã®ãããŒãžã£ãŒãåŒãç¶ãã å Žåã«ã®ã¿ä¿®æ£ã§ããããšã¯æããã§ãããã®åé¡ã¯ç®¡çããã³èª¿æŽããå¿
èŠãããããããŒãžã£ãŒã¯ã¯ãŒã¯ãããŒãéçºããã³ãŒããŒã«äœæ¥ãå²ãåœãŠãŸãã â
ãã®åé¡ãåŒãç¶ãã«ã¯çµå¶é£ã«éãå¿
èŠããããçµå¶é£ã¯ãããã©ã®ããã«å®æœãããã決å®ããŸãã
ãããã£ãŠãããã«ãã€ã¯ããœããã®æèœãªèª°ããããå Žåã圌ã¯ã·ã§ãããäžããããšãã§ããŸãã ð
æãåèã«ãªãã³ã¡ã³ã
@DanielRosenwasserããã«é¢ããæŽæ°ã¯ãããŸããïŒ -ç§ã«ãšã£ãŠæãå¿ èŠãªæ©èœã¯1ã€ã§ãã