質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Vue.js

Vue.jsは、Webアプリケーションのインターフェースを構築するためのオープンソースJavaScriptフレームワークです。

TypeScript

TypeScriptは、マイクロソフトによって開発された フリーでオープンソースのプログラミング言語です。 TypeScriptは、JavaScriptの構文の拡張であるので、既存の JavaScriptのコードにわずかな修正を加えれば動作します。

Q&A

解決済

3回答

6724閲覧

TypescriptでimportせずにVue.jsを使う方法

dietono

総合スコア10

Vue.js

Vue.jsは、Webアプリケーションのインターフェースを構築するためのオープンソースJavaScriptフレームワークです。

TypeScript

TypeScriptは、マイクロソフトによって開発された フリーでオープンソースのプログラミング言語です。 TypeScriptは、JavaScriptの構文の拡張であるので、既存の JavaScriptのコードにわずかな修正を加えれば動作します。

0グッド

0クリップ

投稿2017/11/28 04:04

編集2017/12/01 02:13

TypeScript初心者で理解不足な点があると思いますが、以下について質問します。
TypeScriptもVue.jsもどちらもバージョンは最新とします。
※ 【12/1補足追加】 ビルドはtscを使用しており、tsconfigも特に設定しておりません。

html

1<!DOCTYPE html> 2<html lang="ja"> 3<head> 4 <meta charset="UTF-8"> 5 <meta name="viewport" content="width=device-width, initial-scale=1.0"> 6 <meta http-equiv="X-UA-Compatible" content="ie=edge"> 7 <title>TypeScript - Vue.js</title> 8</head> 9<body> 10 <div id="app"> 11 {{ message }} 12 </div> 13 <script src="https://unpkg.com/vue"></script> 14 <script src="script.js"></script> 15</body> 16</html>

↑ このような構成でVue.jsは別途読み込んでいます(この構成は変えられません)

TypeScript

1new Vue({ 2 el: '#app', 3 data: { 4 message: 'Hello Vue!' 5 } 6})

上記のように別ファイルにて記述していく場合、npmなどでインストールしたVue.jsを
import Vue from 'vue'をしなければCannot find name 'Vue'.とエラーになってしまいます。

Vue.jsは外部ファイルとして読み込みたいので、このファイルでimportするのを回避したいのですが方法が分かりません。

こちら解決方法をご教示いただければと思います。宜しくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

tsファイルの先頭行に以下のコードを入れると補完が効くと思うのですがどうでしょうか?

import * as _Vue from 'vue'; declare global { const Vue: typeof _Vue; }

もしかしたら globalじゃなくてwindowかもしれません。
あとnpm install vue 自体は実行が必要です。型定義ファイルを入手しないといけないので。

投稿2017/11/30 09:36

m0a

総合スコア708

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

dietono

2017/12/01 02:12

global → Cannot use 'new' with an expression whose type lacks a call or construct signature. window → ';' expected. それぞれ試した結果上記のエラーが出ました。
guest

0

ベストアンサー

補完は効かなくなると思いますが
import Vue from 'vue'

ts

1interface Window { 2 Vue?: any; 3} 4 5declare var window: Window 6 7const Vue = window.Vue

に置き換えると良いでしょう。

投稿2017/11/28 06:12

編集2017/11/30 01:47
k2wanko

総合スコア24

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

dietono

2017/11/28 06:32 編集

Property 'Vue' does not exist on type 'Window' というエラーがでました
k2wanko

2017/11/29 01:05

もう少しビルド環境にかんする情報を記入できますか? tscを使ってるのかwebpackを使っているのか
dietono

2017/11/29 05:53 編集

ビルドはtscを使用しています。tsconfigも特に設定しておりません。
dietono

2017/12/01 01:47

ありがとうございます!エラーが消えて無事にコンパイルされました
guest

0

今回はTypescript単体でしたがwebpackを使用している場合は以下の方法でも解消されました

Typescript

1import Vue from 'vue' 2 3new Vue({ 4 el: '#app', 5 data: { 6 message: 'Hello Vue!' 7 } 8}) 9

↑ このままだとVue本体も含まれてしまうので

module.exports = { externals: { 'vue': 'Vue' } }

webpack.config.jsにexternalsを設定

参考サイト
http://blog.yoneapp.com/entry/2017/12/01/114052

投稿2017/12/13 02:59

dietono

総合スコア10

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問