2017-06-03 106 views
0

我編寫了需要Vuejs庫v2的typescript 2.3 app.ts。 Vuejs腳本src在html文件中手動添加。 我只想用Vuejs進行類型檢查! 我的預期,我只是必須引用這樣的:無需使用typescript模塊()

/// < reference path="vue.d.ts" />

Vue公司類是不從app.ts.訪問

我試圖直接導入模塊:

import * as Vue from "./vue";

這個時候我必須使用新Vue.Vue({})訪問的類,但2017年VS構建。 生成的app.js以開頭Var Vue = require(「./ vue」);。 然而,在瀏覽器中,我得到一些錯誤:

  • 出口參考(解決通過添加出口= 0;在.TS
  • 要求第1行是不是一個函數

對於require(),我加<腳本src =「Scripts/require.js」> </script>但是新錯誤:尚未加載上下文

我試着用systemjs代替require.js,我加了< script> System.import('scripts/app.js'); </script>我得到一個404訪問「Scripts/vue」(app.js中的require),其餘的app.js不會被執行。

注:tsconfig.json

我在我的記憶中很驚訝,因爲我不使用,jQuery的的參考與打字稿0.9

我完全失去了工作。幫我 !謝謝你的社區!

回答

0

我通常通過創建globals.d.ts文件來解決您遇到的問題,該文件負責設置我的代碼所期望的全局環境。你的情況是這樣的:

import * as _Vue from "vue"; 

declare global { 
    const Vue: typeof _Vue; 
} 

這使得這樣編譯器會看到在全球空白,這是同類型的「VUE」模塊出口什麼的Vue象徵。

通過上述文件,這個編譯:

const q = new Vue(); 

注意,你要麼將不得不使用一個tsconfig.json。即使是空的也可以。 (通過「空」,我的意思是一個文件,只包含一個空的JSON結構:{}。)或者你將不得不列出要編譯的所有文件,包括在命令行上的globals.d.ts

+0

我喜歡這個approch.'const q =新Vue()'不會建立,但'新Vue.Vue'確實,我有intellisense。 這使得一個問題:生成的JS文件保持'Vue.Vue'表示法不正確(_file2.ts:10 Uncaught TypeError:Vue.Vue不是構造函數_)。 – Baud