Typescript: Typescript゚ディタヌでGotoImplementationを有効にする

䜜成日 2015幎12月22日  Â·  83コメント  Â·  ゜ヌス: microsoft/TypeScript

Typescript゚ディタヌがタむプの実装をリストする方法を提䟛できたすか
これは間違いなく、開発者の生産性がタむプの実装をより速く芋぀けるこずができるようにするのに圹立ちたす。

たずえば、Atom゚ディタヌのatom-typescriptプラグむンでは、F12キヌを抌しお「宣蚀に移動」できたす。珟圚実装されおいるように、実際の実装ではなく関数シグネチャを持぀typescript.d.tsファむルにたどり着くこずがよくありたす。

Typescriptパヌサヌは、倚くの堎合、.ts実装ファむルからd.tsファむルを生成するためです。 Typescript゚ディタヌが開発者を実装クラスたたは関数のリストに連れお行くこずができるように、d.tsファむルず.tsファむルの間のその関連付けを保持できたすかおそらくtypescriptコンパむラオプションで出力されたす

Atom-typescript゚ディタヌに察しお同様のリク゚ストを開きたしたが、Typescriptパヌサヌのサポヌトなしではこれを実装できないこずを瀺しおいたす。
TypeStrong / atom-typescript790

API Symbol Navigation Experience Enhancement Suggestion VS Code Tracked

最も参考になるコメント

@DanielRosenwasserこれに関する曎新はありたすか -私にずっお最も必芁な機胜は1぀です。

党おのコメント83件

したがっお、定矩がアンビ゚ントであるずいう条件で、この機胜が利甚可胜な堎合は察応する.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行117
  • 「タむプ定矩に移動」-> node_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぀のメニュヌ項目のみを保持し、それらをより䞀貫しお動䜜させるこずです。

  • Go To Definitionは、ロヌカルコヌド、統合された.d.tsファむルを含むnode_modulesパッケヌゞ、たたはJSパッケヌゞずは別のDefinitelyTyped定矩であるかどうかに関係なく移動する必芁がありたす。
  • [タむプ定矩に移動]は、遞択がタむプ識別子であるか非タむプ識別子であるかに関係なく

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キヌを抌しながら宣蚀をクリックするず、実装が芋぀かっおダりンロヌドしお開くこずができる堎合は、実装に移動したす。 それ以倖の堎合は、どの問題が゜ヌスの怜出/オヌプンを劚げおいるかずいうメッセヌゞが衚瀺されたす。 それがこのように機胜した堎合、それは玠晎らしいでしょう。

元の゜ヌスコヌドを芋぀けるには、次のシナリオがあるず思いたす。

  1. パッケヌゞは、倖郚リポゞトリのタむプスクリプトず元の゜ヌスコヌドで蚘述されおいたす。
    a配垃にd.ts jsファむルず
    b配垃には、 d.ts 、 js 、およびtsファむルが含たれたす
  2. パッケヌゞは、珟圚のリポゞトリモノリポゞトリの堎合にタむプスクリプトず元の゜ヌスコヌドで蚘述されおおり、
    a配垃にはd.tsおよびjsファむルが含たれたす
  3. パッケヌゞは、倖郚リポゞトリのjavascriptず元の゜ヌスコヌドで蚘述されおいたす。
    aディストリビュヌションには、独自のd.ts jsファむルず
    a配垃にはjsファむルのみが含たれ、倖郚の@types定矩が䜿甚されたす
  4. パッケヌゞは、珟圚のリポゞトリモノリポゞトリの堎合にjavascriptず元の゜ヌスコヌドで蚘述されおいたす。
    a配垃には、独自の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の䞀郚のマネヌゞャヌが匕き継いだ堎合にのみ修正できるこずは明らかです。この問題は管理および調敎する必芁があり、マネヌゞャヌはワヌクフロヌを開発し、コヌダヌに䜜業を割り圓おたす。 ☝
この問題を匕き継ぐには経営陣に送る必芁があり、経営陣はそれをどのように実斜するかを決定したす。
したがっお、ここにマむクロ゜フトの有胜な誰かがいる堎合、圌はショットを䞎えるこずができたす。 😊

このペヌゞは圹に立ちたしたか
0 / 5 - 0 評䟡