最近项目用了nuxt,又想用typescript,于是摸索了很久有了这篇文章
说明:最新版的脚手架已经支持创建TypeScript项目了,直接命令行创建接口
nuxt官方有typescript的教程:https://typescript.nuxtjs.org/。
我们需要安装三个依赖包:
-
@nuxt/types
包含 Nuxt 的 TypeScript 的一些类型定义。
这个包已经在 @nuxt/typescript-build 以及 @nuxt/typescript-runtime 引入了,如果已引入上面两个包,无需再显式的引入了。 -
@nuxt/typescript-build
能让 Nuxt 在 layouts, components, plugins 和 middlewares 中使用 TypeScript。 -
@nuxt/typescript-runtime
暂时不需要,先不做介绍
警告
这些包只支持 Nuxt 2.10 or 更高版本.
安装
官方推荐yarn安装,实际上我在windows上用npm安装是有问题的
yarn add --dev @nuxt/typescript-build
然后在nuxt.config.js
中的 buildModules 中加入 @nuxt/typescript-build
// nuxt.config.js
export default {
buildModules: ['@nuxt/typescript-build']
}
然后在根目录创建一个tsconfig.json
的文件,这个是typescript的配置,内容可以如下:
// tsconfig.json
{
"compilerOptions": {
"target": "es2020",
"module": "esnext",
"moduleResolution": "node",
"experimentalDecorators": true,
"lib": [
"esnext",
"esnext.asynciterable",
"dom",
"dom.iterable" //这里是新增项
],
"esModuleInterop": true,
"allowJs": true,
"sourceMap": true,
"strict": true,
"noEmit": true,
"baseUrl": ".",
"paths": {
"~/*": [
"./*"
],
"@/*": [
"./*"
]
},
"types": [
"@types/node",
"@nuxt/types"
]
},
"exclude": [
"node_modules"
]
}
为了使用typescript的最新语法,我们将
target
字段设置成了es2020
,
为了使用装饰器将experimentalDecorators
设置成了true
为了能让typscript
识别vue
文件你也需要在根目录加入vue-shim.d.ts
文件
declare module "*.vue" {
import Vue from 'vue'
export default Vue
}
然后将package.json
里面的scripts
命令改一下
"scripts": {
"dev": "nuxt",
"build": "nuxt build",
"start": "cross-env NODE_ENV=production node server/index.js",
"generate": "nuxt generate",
"lint": "eslint --ext .ts,.vue ."
},
最后将我们的文件除了(server/index.js
和nuxt.config.js
)都改成.ts
类型
执行命令
yarn dev
就可以在本地启动啦!
网友评论