2017-02-05 15 views
11

私はVisual Studioコード、Vue 2(webpackテンプレート)とTypescriptを使用しています。VSコードを使って.vueファイルでTypescriptを操作するには?

これは私のApp.vueコンポーネントです:

<template> 
    <div id="app"> 
     <navbar></navbar> 
     [content here] 
    </div> 
</template> 

<script lang="ts"> 
    import Navbar from './components/Navbar' 

    export default { 
     components: { 
      Navbar 
     } 
    } 
</script> 

質問1:すべてが正常に動作しているが、それは.TSファイルで起こるように私は<script lang="ts">タグ内にインテリセンスを持っていると思いますので、どのように私は達成することができますそれ?

質問2:私のmain.tsにはimport App from './App'がありますが、VSコードは.tsファイルを見つけることができないので、 "./App"には赤で下線が引かれています。エディタにコンパイル時間の前に.vueを認識させる方法がありますか?

+0

Q2に関しては、私は拡張子を持つインポートを使用しています: "import {default as Question} from。"/Question.vue'' " – TSV

+0

@TSV" Question "どれか"? – Oswaldo

+0

はい、まだインテリセンスはありませんが、それを遵守させました:-) – TSV

答えて

6

内部テンプレートと.TSは、同じようApp.vueでそれを別のscript.tsファイルに活字体のコードを入れて、次のとおりです。@Oswaldoにより示唆されるように、Q2については

<script lang="ts"> 
    import s from './script' 
    export default s 
</script> 

、あなたは01に定義することができます次の内容を持っているファイル:

declare module '*.vue' { 
    import Vue = require('vue') 
    const value: Vue.ComponentOptions<Vue> 
    export default value 
} 

あなたは​​フォルダにこのファイルを置く場合、あなたは

"typeRoots": ["./typings"] 

ようなあなたのtsconfig.jsonで、このタイプのファイルをインクルードする必要があり次にあなたが*.vueファイルをインポートすることができます.vue接尾:

import App from './App.vue' 

あなたはを含めるのは好きではない場合Postfixは、あなたは、このようなsrc/componentsのような単一のフォルダ内のすべてのVueのコンポーネントを入れて、次のようにvue.d.tsを変更することができます。

declare module 'src/components/*' { 
    import Vue = require('vue') 
    const value: Vue.ComponentOptions<Vue> 
    export default value 
} 

srcは絶対パスの別名としてwebpack.base.conf.jsを定義しています。

resolve: { 
    extensions: ['.js', '.vue', '.json', '.ts'], 
    alias: { 
    'vue$': 'vue/dist/vue.esm.js', 
    'src': resolve('src') 
    } 
} 

は、その後、あなたは.vue接尾辞せずにコンポーネントをインポートするには、完全なパスを使用する必要があります。

import App from 'src/components/App' 

の両方がエレガントな解決策ではなく、赤い下線がなくなっています。

+0

thx、ちょうどveturを示唆するようにQ1を変更します(私の質問はvueの単一ファイルコンポーネントに関するものでした)。それは答えとして – Oswaldo

+0

私は '.d.ts'ファイルを含むことが' .vue'ファイルでインテリセンスを無効にすることを発見しました!どうやらVSコードが '* .vue'拡張をモジュールとして識別すると、Veturは' .vue'ファイルをもう解釈しません。 – Kokodoko

1

Q2の場合、vue-class-componentには、sfc.d.tsというソリューションが付属しています。あなたはQ1のための任意のアイデアを持っている場合は、Q1のために私に

1

ご連絡ください、私はコードの拡張子VS素敵を見つけたそれは.vueファイルでは達成できないQ2についてはインテリセンスのサポート

veturと呼ばれ、のみを使用する必要がありますQ1のためにそれ

+0

vetur(または他のVSコード.vueプラグイン)は型チェッカーエラーをサポートしていないことに注意してください。 – hayavuk

+1

vetur intellisenseがバージョン0.6で追加されます:https://github.com/octref/vetur/pull/94 – Lucas

関連する問題