私はVisual Studio Code、Vue 2(webpackテンプレート)および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:すべて正常に動作していますが、インテリセンスを<script lang="ts">
タグが.tsファイルで発生するので、どうすればそれを実現できますか?
質問2:main.tsにはimport App from './App'
が、VS Codeが.tsファイルを見つけられないため、「./ App」には赤の下線が付いています。コンパイル時(編集時)にエディタが.vueを認識するようにする方法はありますか?
Update(2018-03-25):TypeScriptをセットアップして、 this
Q1の場合、TypeScriptコードを別のscript.ts
ファイルに入れ、App.vue
に含めます:
<script lang="ts">
import s from './script'
export default s
</script>
Q2では、@ Oswaldoが示唆するように、次の内容を持つvue.d.ts
ファイルを定義できます。
declare module '*.vue' {
import Vue = require('vue')
const value: Vue.ComponentOptions<Vue>
export default value
}
このファイルを${Project_ROOT}/typings
フォルダーに配置する場合、このタイプのファイルをtsconfig.json
のように含める必要があります
"typeRoots": ["./typings"]
次に、*.vue
後置記号付きの.vue
ファイルをインポートできます。
import App from './App.vue'
.vue
接尾辞を含めたくない場合は、すべてのVueコンポーネントをsrc/components
などの単一フォルダーに入れて、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'
どちらもエレガントなソリューションではありませんが、赤い下線は消えています。
Q2の場合、vue-class-componentにはソリューションが付属しています。 sfc.d.ts Q1のアイデアがあれば、お知らせください
第1四半期には、インテリセンスをサポートする vetur というNice VS Code拡張機能が見つかりました
Q2の場合、.vueファイルでは実現できません。テンプレートで.tsのみを使用する必要があります