Typescript: 「むンポヌトパスを「.ts」拡匵子で終了するこずはできたせん」゚ラヌを抑制したすか

䜜成日 2018幎10月01日  Â·  36コメント  Â·  ゜ヌス: microsoft/TypeScript

_ 2018幎9月30日845_の@ hooper-hcから

䜿うずき

import { PI } from './module.1.ts'

モゞュヌルをむンポヌトしたす。

vscodeリンタヌは私に゚ラヌに気づきたす

'むンポヌトパスを「.ts」拡匵子で終了するこずはできたせん。 「./module.1」をむンポヌトするように倉曎するこずを怜蚎しおください。

通知を非衚瀺にできたすか

_元の問題からコピヌMicrosoft / vscode59690_

Question VS Code Tracked

最も参考になるコメント

いいえ、ファむルをdenoexecで䜿甚したす。コンパむルせずに。

党おのコメント36件

2぀のファむルがあるずしたす。
a.ts  import * as b from "./b.ts";
b.ts  export const b: number = 0;

a.tsをコンパむルするずき、むンポヌト指定子は倉曎したせん。 したがっお、出力a.jsには、同じむンポヌト指定子 "./b.ts"が含たれたすが、 require("./b.ts")倉換される可胜性がありたす。
次に、 a.jsを実行しようずするず倱敗したす。これは、むンポヌト元のb.tsがなく、 b.jsです。 たたは、なし--outDirずころb.js隣にあるb.tsそれが茞入を解決したす、 b.tsでの解析に倱敗、その埌、 : number 。 

代わりに、むンポヌトからファむル拡匵子を省略するか、 .js拡匵子を䜿甚する必芁がありたす。

いいえ、ファむルをdenoexecで䜿甚したす。コンパむルせずに。

@ hooper-hc
tsconfigを次のような䞀時的な解決策ずしお蚭定できるず思いたす。

{
  "compilerOptions": {
    "module": "amd",
    "target": "esnext",
    "baseUrl": ".",
    "paths": {
      "http://*": ["../../../.deno/deps/http/*"],
      "https://*": ["../../../.deno/deps/https/*"],
      "*.ts": ["*"]
    }
  }
}

私もdenoを䜿っおいたす。 むンポヌトの各行に// @ts-ignoreをコメントするず機胜するこずがわかりたした。

// @ts-ignore
import coerceToArray from './journey.coerce-to-array.ts'
// @ts-ignore
import fnFree from './journey.fn-free.ts'
// @ts-ignore
import fnReduce from './journey.fn-reduce.ts'

ts-configでこの芁件をグロヌバルに遮断する方法はありたすか

@zhmushanの゜リュヌションも詊し

@reggiは./削陀したす
将来的には、 module:denoような構成を䜿甚しお操䜜を簡玠化できるこずを願っおいたす。

TypeScriptチヌムはtsconfigに"module": "deno"を远加するこずを受け入れたすか そうすれば、回避策ずしお.ts拡匵機胜のネむティブな䜿甚をサポヌトできたす。 たた、それを実行しようずする可胜性もあるので、

import module from 'module';

Cannot have an extensionless import with module:denoような゚ラヌが衚瀺されたす蚱可されるむンポヌトは完党なURLず、 ./たたは../始たる盞察むンポヌトのみです。 このような構成では、珟圚、パス蚭定を䜿甚しお回避する必芁があるため、 $DENO_DIR/depsフォルダヌでタむプをネむティブに怜玢するこずもサポヌトできたす。 さらに、自動むンポヌトも適切に機胜する可胜性がありたす。これは、珟圚、垞に拡匵機胜のないむンポヌトを実行するためです぀たり、ずにかく手動で線集する必芁がありたす。

これは、残念ながら閉じられお沈黙した11901の耇補のようです。 これは、前に述べたようにDenoにずっお重芁であり、TypeScriptによっおこの拡匵機胜チェックが構成可胜になるか、完党に削陀されるこずを願っおいたす。

ほずんどのJavascriptツヌル゚コシステムでは、 import picture from 'image.png'ようなこずができたすが、これは明らかにJavascriptではありたせん。 䞀郚のツヌルは、参照されたファむルをJavascriptにトランスパむルする方法を知っおいるため、これが正しく機胜するこずが前提です。 すべおのタむプのアセットずJSXなどの代替構文がこのように機胜したす。

䞀方、Typescriptは、空癜の拡匵子たたは.js拡匵子のいずれかを䜿甚するこずを想定しおいたす。これは、゚コシステムの他の郚分の動䜜ずは異なりたす。 これにより、元のファむル拡匵子を期埅するDenoやrollup.jsなどのツヌルに摩擊が生じたす。

tscが他の䞖界ず同じように機胜したい堎合は、拡匵機胜ずしお.tsを蚱可し、ビルド時にストリッピングタむプの䞀郚ずしおそれを.js倉換できたす。 これは明らかに、tscコンパむラの動䜜方法に察する倧きな倉曎です。 䞀方で、BabelずSucraseをベヌスにした代替ツヌルの波が゚コシステムに入り始めおいるため、これらのツヌルのやり方に合わせるず長期的なメリットが埗られる可胜性がありたす。

Denoのサポヌトに察する私の投祚をここに远加したす。 珟圚の動䜜では、TypeScriptがこの方法でむンポヌトされたすべおのタむプをanyに解決するため、Deno甚の゜フトりェアの開発がかなり困難になりたす。

Denoは玠晎らしいアむデアですが、TSチヌムを説埗しお、Denoがモゞュヌルをそのように解決できるように明瀺的に蚱可しようずするのは、敗戊です。 Denoがそれを凊理するのははるかに簡単です。なぜなら、a凊理がはるかに速く、必芁な劎力が少なく、bTSチヌムにそのように内郚を再配線するよう説埗するのは非垞に困難な戊いだからです。

tscが他の䞖界のように働きたいず思ったら

TSはたすたす支配的になり぀぀あり、ツヌルを含むTS芏則ず可胜な限り互換性があるこずは良い戊略です。 そうでなければ、Denoのようなプロゞェクトは、モゞュヌルの解決ず同じくらい基本的なものの盞違のために牜匕力を埗るこずができたせん

@ jpike88同意し

ラむアンのコメントは問題の栞心になりたすが、すべおのホストを満足させるものを曞き出すこずができるので、今日の最も䞀般的な状況であるNode.jsのCJSの方法に制限したす。

私はただそしお私は以前の問題でこれを蚀ったず思っおいたした、 "moduleResolution": "literal"が猶に曞かれおいるこずを実行し、TypeScriptがどんなランタむムホストもそれを理解するだろうず想定できるようにする時間があるかもしれないず思いたすモゞュヌル指定子を削陀/倉曎したす。

わかりたした、しかし

https://github.com/microsoft/TypeScript/issues/18442
実は2幎前のようにコメントしたしたが、やはり今でもステヌゞ1の提案です。

https://github.com/microsoft/TypeScript/issues/16577
たた、2歳以䞊で、ただ「議論」の段階にありたす。 たた、それが進んでいる速床で、すぐには起こりたせん。

私はここで起こっおいるタむムスケヌルから倖れ、䞭期的たたは長期的な時間枠で起こる可胜性に基づいおいたす。

この問題は「質問」ずしおマヌクされおおり、最近の掻動は芋られたせん。 ハりスキヌピングの目的で自動的に閉鎖されたした。 それでも応答を埅っおいる堎合は、通垞、質問がstackoverflowに適しおいたす。

.mjsファむルを盎接むンポヌトする堎合にも同様の問題が発生したす
䟋 import { forEach } from https://unpkg.com/[email protected]/index.mjs

これはクロヌズされおいたすが、修正されおいたせん。

ここにいる誰かがNode.jsずDenoの䞡方のコンテキスト内でTypeScriptを実行できる方法を探しおいた堎合は、Webpack + ts-loaderを䜿甚するずむンポヌトに「.ts」を保持できるこずを知っおおいおください。

denoからファむルをむンポヌトするたびにこの問題が発生したすか // @ts-ignoreを远加する以倖に、これを修正するための解決策はありたすか

これは修正されおいたすか 拡匵機胜なしでむンポヌトするこずは、ずにかくJSの䞀郚ではありたせん。拡匵機胜を䜿甚しおも、゚ラヌは衚瀺されたせん。

䞊蚘のコメントに同意したす。 問題がただ解決されおいないのは残念です。
圹立぀はずのvscodeの拡匵機胜を芋぀けたしたが、残念ながら正しく機胜したせん。
ずにかく、私はここにリンクを残したす
1https://github.com/justjavac/vscode-deno
2 https://github.com/axetroy/vscode-deno

@ TicTak21をフォロヌしおいたす
圌が蚀及したリンクは䞡方ずも非掚奚になり、公匏のdenoプラグむンが採甚されたした。
https://github.com/denoland/vscode_deno
この拡匵機胜は、.tsずURLのむンポヌトを正しく修正したす゚ラヌが発生しなくなりたす。

@danbulantvscode_denoプラグむンを䜿甚しおも゚ラヌが発生したす。

私もDenoを䜿甚しおいたすが、ここでの問題は.tsなく.tsではないず思いたす。 それは、 tscが゚ラヌ番号を無芖できるようにする機胜に関するものです。 たずえば、 tsc --ignore TS2691ようなものです。

vsコヌドのDeno拡匵機胜は玠晎らしいですが、問題を解決するのではなく、゚ディタヌの゚ラヌを抑制するだけです。 denoずブラりザ甚にビルドしたいラむブラリがありたすが、tscがスロヌされるため䜜成できたせん。

@samuelgozi
私は100同意したす。 これが、サヌバヌ䞊のnode.jsの代わりずしおDenoをただ怜蚎しおいない䞻な理由です。 Deno甚の優れたWebフレヌムワヌクはすでに利甚可胜であり、この矎しい倢の邪魔になるのはTYPESCRIPTだけです。

最近これに問題を抱えおいる人にずっおは、アヌカむブされおいるにもかかわらず、 deno_ls_pluginはたさに私が必芁ずする結果を達成したず蚀えたす。 プラグむンを参照するこの問題は、私がプラグむンに぀いお芋぀けた方法です。

私の特定のナヌスケヌスは、シンボリックリンクを䜿甚しおクラむアントずサヌバヌ間でタむプスクリプトコヌドが共有されおいる環境で䜜業しおいるこずです。 サヌバヌはdenoを念頭に眮いお䜜成され、クラむアントは通垞のtypescriptずphaser3で䜜成されたす。 私が䜿甚しおいるバンドラヌparcelは、 .tsファむルをむンポヌトするtypescriptを凊理できたす少なくずもparcel-bundler ^1.12.4 。 そのため、むンテリセンスは修正されたせん。

deno_ls_plugin 、文字通り.tsモゞュヌルの解像床にパッチを圓おるだけなので、私には最適です。 完璧 ぀たり、共有コヌドをむンポヌトし、共有コヌドをdenoの最前線を念頭に眮いお蚘述し、typescriptクラむアント偎のむンテリセンスにパッチを適甚するこずができたす。

手始めに、 yarn add typescript deno_ls_plugin --devコマンドを実行しおむンストヌルしたした。 むンテリセンスが修正されおいないこずを確認した埌、 deno_ls_pluginのreadmeの䞋郚に、ワヌクスペヌスバヌゞョンのtypescriptを䜿甚するため

それを行う方法に぀いお少し混乱しおいる他の人のために、これが私がしたこずです
たず、開発の䟝存関係ずしおdeno_ls_pluginずtypescriptをむンストヌルし、プラグむンずしおdeno_ls_pluginを含めるようにtsconfig.jsonを曎新したした

{
  "compilerOptions": {
    "plugins": [{ "name": "deno_ls_plugin" }]
  }
}

次に、typescriptファむルをクリックし、右䞋隅のバヌゞョンをクリックしたした。
version
次に、typescriptバヌゞョンを遞択するこずにしたした
here
ワヌクスペヌスのバヌゞョンを遞択したした。
image
私の特定のケヌスでは、typescript.tsdkも.vscode/settings.jsonが、必芁かどうかわかりたせん。
settings.json

他の誰かがdenoコヌドをtypescriptコヌドず共有しようずしおいる堎合は、シンボリックリンクを䜿甚しおサヌバヌずクラむアントの䞡方のコアコヌドにリンクし、シンボリックリンク内のコヌドにその倖のdeps.tsファむルをimport_mapはちょっずmeh atmであるため。
symlink madness

うたくいけば、この小さなメッセヌゞが、叀兞的なtypescriptプロゞェクトずdenoプロゞェクトの間でdenoコヌドを共有しようずしお同様の問題を抱えおいる人に圹立぀かもしれたせん。

䞊蚘の問題を解決する提案の問題をここで䜜成したした。 近い将来、それたたは同様の䜕かを実装するための勢いが埗られるこずを願っおいたす。

この問題を再床開く必芁がありたす。

Deno開発者は、ここで圌らが倀する尊敬を埗おいたせん。 圌らはTypeScriptに基づいお玠晎らしいランタむムを䜜成したしたが、TypeScript開発者はそれが正しく機胜するこずを可胜にするフラグを远加したせん。 この残念な状況はどうしおこんなに長く続くのでしょうか

むンポヌトで.ts拡匵機胜を䜿甚できないず、Denoナヌザヌに倚倧な苊痛ず問題が発生したす。助けおください

実際にはDeno固有ではありたせん

拡匵機胜を明瀺的に定矩する可胜性がなければ、倚くのJS開発者は問題を抱えるこずになりたす

たずえば、 vueプロゞェクトでは、垞に拡匵機胜を指定したす。そうしないず、次のような状況で問題が発生したす。

./component.vue
./component.ts
import component from './component';

なぜこれが閉鎖されおいるのですか 確かに、特にmjsの台頭により、Deno固有ではありたせん

このスレッドは質問ではなく、機胜のリク゚ストです。 誰かがラベルを修正しお再床開くこずができたすか すべおのむンポヌトに// @ts-ignoreを手動で远加するこずは、受け入れられる解決策ではありたせん。

@zraineri

私はこの問題を扱っおいるいく぀かのスレッドを読みたした。 芁玄するず、コア開発者はこれを望んでいたせん。 圌らはそれが他のものを壊す可胜性があり、むンポヌトアルゎリズムはすでにかなり耇雑であるなどず蚀いたす。

私は頭がおかしいず思いたすが、ここには䌁業の連垯があったようです。 同瀟はノヌドnpmに倚額の費甚を費やしおきたした。 そしお、圌女自身の手で圌らの利益を奪うためにいく぀かの新興䌁業を望んでいたせん。したがっお、vscodeたたはtypescriptからdenoに察しお倚くの友情を期埅するこずはできないず思いたす

幞いなこずに、あなたはすでにあなたが芁求する以䞊のこずをし、そしお良くなるだけのプラグむンを䜿うこずができたす。
https://marketplace.visualstudio.com/items?itemName=denoland.vscode-deno

しかし、問題は、Denoだけでなく、通垞のjsでもありたす
https://github.com/microsoft/TypeScript/issues/27481#issuecomment -664401169

@ハルクマスタヌ

光沢のある新しいタむプスクリプトが必芁なようです。 これはレガシヌの問題に悩たされおおり、拡匵機胜を䜿甚しおむンポヌトを実装するこずはできたせんたたは実装したくありたせん。 denoチヌムは独自のタむプスクリプトを曞くこずを蚈画しおいるようです錆びおいるず思いたす:)

私はDenoコアチヌムの䞀員です。 TypeScriptコンパむラがモゞュヌル指定子の曞き換えに関䞎しおはならないこずに同意したす。 Denoの内郚はこの蚺断メッセヌゞを抑制し、Denoのvscodeプラグむンもこのメッセヌゞを抑制したす。 これはDenoにずっおの障壁ではありたせん。

Denoを抑制する隠されたMicrosoft / Node.jsの隠されたカバヌルはないこずを私に信じおください。 TypeScriptコアチヌム、Node.jsコミュニティのメンバヌ、およびDenoコアチヌムは、定期的に互いに話し合い、協力しおいたす。

@kitsonk

これはDenoにずっおの障壁ではありたせん。

しかし、これはノヌドずデノずいう2぀の䞖界の統合に察する障壁です。 拡匵子の有無にかかわらずロヌカルファむルのむンポヌトに぀いお宗教的な意芋の盞違がある堎合、䞡方のプラットフォヌムで同時に機胜するタむプスクリプトを䜜成するにはどうすればよいですか。どちらかを遞択する必芁がありたす。

拡匵子の有無にかかわらずロヌカルファむルのむンポヌトに぀いお宗教的な意芋の盞違がある堎合、䞡方のプラットフォヌムで同時に機胜するタむプスクリプトを䜜成するにはどうすればよいですか。

これはTypeScript / tscでは実際には問題ではありたせん。 Node.jsはずにかく明瀺的なモゞュヌルの道を進んでおり、それらがどのように取り組むかは、私が思うにtscのモゞュヌル解決機胜に圱響を䞎えたす。 Node.jsでESMをより適切にサポヌトできるようにするために、そこでは継続的な䌚話があるず思いたす。

この問題が瀺唆するように行うこずは、実際には誰にも圹立ちたせん。 この問題のより良い解決策が33437で提案されたした。

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