2

VSCode/Monacoのインテリセンスに変数の種類をヒントできますか?VSCode/Monaco IntellisenceのJavaScriptタイプのヒントを追加

私が持っている私はVSCodeがlocURL

vscode knows loc

であることを知っている。しかし、それはglが何であるかを知らないことがわかり、この

var loc = window.location; 
var gl = context1.getContext("webgl"); 
var ctx = context2.getContext("2d"); 

のようないくつかのコード

vscode does not know gl

また、それは、ctxは理にかなって

vscode does not know ctx

が何であるかを知らず、関数はその入力に基づいて、異なる型を返す有するやや珍しいケースです。

しかし、それはWebGLRenderingContext

vscode knows webglrenderingcontext

のための型のデータを持っているし、それがCanvasRenderingContext2D

vscode knows canvasrenderingcontext2d

を知っている私はvscodeを伝えるためにのために方法はありますが/ glであることモナコインスタンスはWebGLRenderingContextであり、ctxCanvasRenderingContext2D wiのインスタンスですtypescriptに切り替える必要はありませんか?たぶん、コメントを追加することで?

これはWebGLチュートリアルサイトのためのもので、実際はVSCodeのものではないので、少なくとも私のテストでは少なくとも私のテストでは解決する解決策が必要ですが、解決策が同じだと思っています。

+1

JSDocのは、バージョン0.90以降モナコで動作します。 https://stackoverflow.com/a/45181853/2102158を参照してください。 –

答えて

3

更新:モナコの0.9.0のように、これらの型注釈は今


は、彼らがモナコで動作するように表示されませんがVSCodeでそのJSDoc style type annotations作品を見ている作業します。

var loc = window.location; 

/** @type {WebGLRenderingContext} */ 
var gl = context1.getContext("webgl");  

/** @type {CanvasRenderingContext2D} */ 
var ctx = context2.getContext("2d"); 

あなたは活字体を使用して喜んでいる場合enter image description here

enter image description here

+0

この手法は、インポートされたタイプでは機能していないようです。たとえば、 'var Foo = require(" foo ");/** @type {Foo} */var foo; 'この例では、' Foo'はVSCodeが認識し、フルインテリセンスを持つ型です。その代わりに 'var Foo = require(" foo "); var foo = new Foo(); 'すべて動作します。インポートされたタイプでこれを正しく動作させるためのヒント –

+0

@MicahZoltu私はExpressライブラリからタイプを注釈する同様の問題がありました。私はこの作業を行う方法を見つけ、この質問に追加の回答を掲載しました。 https://stackoverflow.com/a/48752318/1359579 – DannyMeister

0

、あなたはこれを行うことができます:ミカPとして

var gl : WebGLRenderingContext;

enter image description here

+0

ありがとう!残念ながら私はJSでTSを教えているサイトでそれを使っています。 – gman

+0

@gmanよくタイプスクリプトはjavascriptにかなり似ています。それの多くは非常にjavascriptに似ている、非常に簡単に変換する – kinger6621

1

受け入れられた答えに対するコメントの中には、まだ外部モジュールに問題があるかもしれません。ライブラリで、型を参照できるグローバルオブジェクトが定義されている場合、jsdoc型の注釈が有効になります。それ以外の場合は、すべてをインポートして自分の名前にマッピングすることでこれを模倣することができます。

import * as Foo from 'foo' 

/** @type {Foo.Foo} */ 
var foo; 

https://github.com/Microsoft/TypeScript/issues/8237#issuecomment-213047062

関連する問題