三、報錯
1. main.ts報錯( Cannot find module './App.vue'.)
原因: typescript不能識別.vue文件
解決辦法: 引入vue的typescript declare庫
在tsconfig.json中加入
其中,types是自己延伸的一些declare
下面的是vue中的types拓展
改后的tsconfig
{
"exclude": [
"node_modules"
],
"compilerOptions": {
"allowSyntheticDefaultImports": true,
"allowJs": true,
"module": "es2015",
"target": "es5",
"moduleResolution": "node",
"experimentalDecorators": true,
"isolatedModules": true,
"typeRoots": [
"./types",
"./node_modules/vue/types"
],
"lib": [
"es2017",
"dom"
],
"sourceMap": true,
"pretty": true
}
}
2. 在ts的vue中引入js的vue
原因: 問題同上芙贫,使用node/vue的types沒起作用
解決辦法: 自己寫一個捧韵。上面的tsconfig中都许。types就是為了讓我們多一些自己的declare陌僵。
里面寫上
declare module "*.vue" {
import Vue from 'vue'
export default Vue
}
3. 在ts的vue中使用一些vue組件帶來的變量胎撤,如element-ui的$message(Property '$message' does not exist on type ...)
原因:缺少typescript類型
解決方法:
this.$message({
type: 'success',
message: '已收藏'
})
拋出錯誤 Property '$message' does not exist on type
一晓殊、(推薦)
myThis:any = this
this.myThis.$message({
type: 'success',
message: '已收藏'
})
二、起作用
this['$message']({
type: 'success',
message: '已收藏'
})
三伤提、(推薦)
在types下新建如下目錄結(jié)構(gòu)
/*index.d.ts*/
export declare class MessageParam {
type: string;
message: string
}
export declare interface Message {
(messageParam: MessageParam):void;
}
/*vue.d.ts*/
import Vue = require("vue");
import { Message } from "./index";
declare module "vue/types/vue" {
interface Vue {
$message: Message;
}
}
相當(dāng)于擴(kuò)展typescript的declare
4.XMLHttpRequest is not defined
在typescript中巫俺,經(jīng)常要用一些自己從其他js插件中引入的變量。
但直接在ts中寫肿男,ts會報not defined的錯誤
解決辦法: 使用window.XMLHttpRequest