在开发环境中,Vite 使用 es build ,es build 本身支持 ts 语法!
只编译(将 ts 编译成 js),不校验。
# 只校验,不输出编译的文件
tsc --noEmit
直接使用 ts 语法!
interface People {
name: string;
}
export const people: People = {
name: '大哥刘备',
};
import { defineComponent } from "vue";
import { people } from './test.ts'
export default defineComponent({
setup() {
return () => <div class="root">Hello { people.name } !</div>;
}
});
npm run dev 便于复制!
vite 支持 ts 语法,只编译,可直接使用,但不校验!
interface People {
name: string;
}
export const people: People = {
name: '大哥刘备',
age: 22,
};
说明:vs code 天生支持 ts 语法校验!
没有任何报错!(其实不重新运行也是可以看出来的,如果有错误会立即显示!)
yarn add typescript
下面是一个比较常规的 ts 配置!
{
"compilerOptions": {
"target": "esnext",
"module": "esnext",
"moduleResolution": "node",
"strict": true,
"jsx": "preserve",
"sourceMap": true,
"resolveJsonModule": true,
"esModuleInterop": true,
"baseUrl": ".",
"paths": {
"@/*": [
"src/*"
]
},
"lib": [
"esnext",
"dom"
],
"skipLibCheck": true
},
"include": [
"src/**/*.ts",
"src/**/*.d.ts",
"src/**/*.tsx",
"src/**/*.vue"
],
"exclude": [
"node_modules"
]
}
scripts 下的 build 的值
vite build
改为tsc --noEmit && vite build
{
"name": "vite-vue3",
"private": true,
"version": "0.0.0",
"type": "module",
"scripts": {
"dev": "vite",
"build": "tsc --noEmit && vite build",
"preview": "vite preview"
},
"dependencies": {
"@postcss-plugins/console": "^0.2.5",
"@vitejs/plugin-vue-jsx": "^2.0.1",
"typescript": "^4.8.4",
"vue": "^3.2.37"
},
"devDependencies": {
"@vitejs/plugin-vue": "^3.1.0",
"less": "^4.1.3",
"vite": "^3.1.0"
}
}
npm run build
yarn add vue-tsc
scripts 下的 build 的值
tsc --noEmit && vite build
改为vue-tsc --noEmit && tsc --noEmit && vite build
{
"name": "vite-vue3",
"private": true,
"version": "0.0.0",
"type": "module",
"scripts": {
"dev": "vite",
"build": "vue-tsc --noEmit && tsc --noEmit && vite build",
"preview": "vite preview"
},
"dependencies": {
"@postcss-plugins/console": "^0.2.5",
"@vitejs/plugin-vue-jsx": "^2.0.1",
"typescript": "^4.8.4",
"vue": "^3.2.37",
"vue-tsc": "^0.40.13"
},
"devDependencies": {
"@vitejs/plugin-vue": "^3.1.0",
"less": "^4.1.3",
"vite": "^3.1.0"
}
}
结果省略!
npm run build
推荐将这个配置写在 tsconfig.json 文件里面;
{
"compilerOptions": {
"target": "esnext",
"module": "esnext",
"moduleResolution": "node",
"strict": true,
"jsx": "preserve",
"sourceMap": true,
"resolveJsonModule": true,
"esModuleInterop": true,
"baseUrl": ".",
"paths": {
"@/*": [
"src/*"
]
},
"lib": [
"esnext",
"dom"
],
"skipLibCheck": true,
"isolatedModules": true,
},
"include": [
"src/**/*.ts",
"src/**/*.d.ts",
"src/**/*.tsx",
"src/**/*.vue"
],
"exclude": [
"node_modules"
]
}
如果没有此配置,程序会出错,但没有警告!
正常无错!
关闭时,正常不报错!
报错!
当不使用 declare 关键字声明枚举的时候是可以直接使用,不报错的! declare 参考文章: 1、TS之declare的简单使用 https://blog.csdn.net/youhebuke225/article/details/125664535 2、ts的.d.ts和declare究竟是干嘛用的 https://blog.csdn.net/qq_34551390/article/details/118800743
不常用!
Vite 提供了一些内置的对象,但默认不知道这些变量的类型,需要配置以令其显示。
添加 “types”: [“vite/client”],
{
"compilerOptions": {
"target": "esnext",
"module": "esnext",
"moduleResolution": "node",
"strict": true,
"jsx": "preserve",
"sourceMap": true,
"resolveJsonModule": true,
"esModuleInterop": true,
"baseUrl": ".",
"paths": {
"@/*": [
"src/*"
]
},
"lib": [
"esnext",
"dom"
],
"skipLibCheck": true,
"types": ["vite/client"],
"isolatedModules": true,
},
"include": [
"src/**/*.ts",
"src/**/*.d.ts",
"src/**/*.tsx",
"src/**/*.vue"
],
"exclude": [
"node_modules"
]
}
提示
类型
import VueSVG from './assets/vue.svg';