项目代码同步至码云 weiz-vue3-template

关于tsconfig的配置字段可查看其他文档,如 typeScript tsconfig配置详解

tsconfig.json

文件修改如下:

{
"compilerOptions": {
"target": "ESNext", // 将代码编译为最新版本的 JS
"useDefineForClassFields": true,
"module": "ESNext", // 使用 ES Module 格式打包编译后的文件
"lib": ["ESNext", "DOM", "DOM.Iterable"], // 引入 ES 最新特性和 DOM 接口的类型定义
"skipLibCheck": true, // 跳过对 .d.ts 文件的类型检查
"esModuleInterop": true, // 允许使用 import 引入使用 export = 导出的内容
"sourceMap": true, // 用来指定编译时是否生成.map文件
"allowJs": false, // 是否允许使用js
"baseUrl": ".", // 查询的基础路径
"paths": { // 路径映射,配合别名使用
"@/*": ["src/*"],
"@build/*": ["build/*"],
"#/*": ["types/*"]
}, /* Bundler mode */
"moduleResolution": "node", // 使用 Node/bundler 的模块解析策略
"allowImportingTsExtensions": true,
"resolveJsonModule": true, // 允许引入 JSON 文件
"isolatedModules": true, // 要求所有文件都是 ES Module 模块。
"noEmit": true, // 不输出文件,即编译后不会生成任何js文件
"jsx": "preserve", // 保留原始的 JSX 代码,不进行编译 /* Linting */
"strict": true, // 开启所有严格的类型检查
"noUnusedLocals": true, // 报告未使用的局部变量的错误
"noUnusedParameters": true, // 报告函数中未使用参数的错误
"noFallthroughCasesInSwitch": true // 确保switch语句中的任何非空情况都包含
},
"include": [ // 需要检测的文件
"src/**/*.ts",
"src/**/*.d.ts",
"src/**/*.tsx",
"src/**/*.vue",
"mock/*.ts",
"types/*.d.ts",
"vite.config.ts"
],
"exclude": [ // 不需要检测的文件
"dist",
"**/*.js",
"node_modules"
],
"references": [{ "path": "./tsconfig.node.json" }] // 为文件进行不同配置
}

tsconfig.node.json

修改文件如下:

{
"compilerOptions": {
"composite": true, // 对于引用项目必须设置该属性
"skipLibCheck": true, // 跳过对 .d.ts 文件的类型检查
"module": "ESNext", // 使用 ES Module 格式打包编译后的文件
"moduleResolution": "Node", // 使用 Node/bundler 的模块解析策略
"allowSyntheticDefaultImports": true // 允许使用 import 导入使用 export = 导出的默认内容
},
"include": ["vite.config.ts"]
}

类型定义

新建文件夹 types,用来存放类型定义。比如新建 index.d.ts

type TargetContext = "_self" | "_blank";
type EmitType = (event: string, ...args: any[]) => void;
type AnyFunction<T> = (...args: any[]) => T;
type PropType<T> = VuePropType<T>;
type Writable<T> = {
-readonly [P in keyof T]: T[P];
};
type Nullable<T> = T | null;
type NonNullable<T> = T extends null | undefined ? never : T; interface Fn<T = any, R = T> {
(...arg: T[]): R;
}
interface PromiseFn<T = any, R = T> {
(...arg: T[]): Promise<R>;
}

后续也可以新增其他文件,比如 global.d.ts 存放全局定义,router.d.ts 存放路由定义等

类型检查命令

修改 package.json,新增以下命令:

"scripts": {
"type-check": "vue-tsc --noEmit"
},

保存后,运行 npm run type-check,即可项目中是否有类型错误

Vite4+Typescript+Vue3+Pinia 从零搭建(2) - ts配置的更多相关文章

  1. 从零搭建react+ts组件库(封装antd)

    为什么会有这样一篇文章?因为网上的教程/示例只说了怎么做,没有系统详细的介绍引入这些依赖.为什么要这样配置,甚至有些文章还是错的!迫于技术洁癖,我希望更多的开发小伙伴能够真正的理解一个项目搭建各个方面 ...

  2. Vite-Admin后台管理系统|vite4+vue3+pinia前端后台框架实例

    基于vite4.x+vue3+pinia前端后台管理系统解决方案ViteAdmin. 前段时间分享了一篇vue3自研pc端UI组件库VEPlus.这次带来最新开发的基于vite4+vue3+pinia ...

  3. 【vue3-element-admin 】基于 Vue3 + Vite4 + TypeScript + Element-Plus 从0到1搭建后台管理系统(前后端开源@有来开源组织)

    vue3-element-admin 是基于 vue-element-admin 升级的 Vue3 + Element Plus 版本的后台管理前端解决方案,技术栈为 Vue3 + Vite4 + T ...

  4. 从零搭建TypeScript与React开发环境

    前言 平时进行开发大多数是基于vue-cli或者create-react-app等官方或者公司内部搭建的脚手架.   我们业务仔做的最多就是npm i和npm run dev或者npm start,然 ...

  5. 从零搭建基于webpack的Electron-Vue3项目(1)——基于webpack的Vue3项目搭建

    从零搭建基于webpack的Electron-Vue3项目(1)--基于webpack的Vue3项目搭建 前言 本篇文章内容,主要是基于webpack的Vue3项目开发环境进行搭建,暂时还不涉及到El ...

  6. 从零搭建react hooks项目(github有源代码)

    前言 首先这是一个react17的项目,包含项目中常用的路由.状态管理.less及全局变量配置.UI等等一系列的功能,开箱即用,是为了以后启动项目方便,特地做的基础框架,在这里分享出来. 这里写一下背 ...

  7. 从零搭建基于golang的个人博客网站

    原文链接 : http://www.bugclosed.com/post/14 从零搭建个人博客网站需要包括云服务器(虚拟主机),域名,程序环境,博客程序等方面.本博客 就是通过这几个环节建立起来的, ...

  8. SpringBoot整合Shiro实现基于角色的权限访问控制(RBAC)系统简单设计从零搭建

    SpringBoot整合Shiro实现基于角色的权限访问控制(RBAC)系统简单设计从零搭建 技术栈 : SpringBoot + shiro + jpa + freemark ,因为篇幅原因,这里只 ...

  9. 从零搭建docker+jenkins 自动化部署环境

    从零搭建docker+jenkins+node.js自动化部署环境 本次案例基于CentOS 7系统 适合有一定docker使用经验的人阅读 适合有一定linux命令使用经验的人阅读 1.docker ...

  10. TypeScript完全解读(26课时)_1.TypeScript完全解读-开发环境搭建

    1.TypeScript完全解读-开发环境搭建 初始化项目 手动创建文件夹 D:\MyDemos\tsDemo\client-demo 用VSCode打开 npm init:初始化项目 然后我们的项目 ...

随机推荐

  1. 面试通过,拿到offer了,不去了会怎么样?

    接受了offer但不去,其实没啥事,但这属于诚信问题. 这里有个概念,给了offer但不接受,这没事. 给了offer,也接受了,但在入职前一周(或在其它约定的时间范围内)说不去,同时姿态放低些打招呼 ...

  2. Serverless 年终技术盘点 :工业、学术、社区遍地开花,国内厂商迅速卡位

    作者 | 刘宇(花名:江昱) ​ 2021 年,Serverless 架构在权威咨询机构 Forrester 所发布的 < The Forrester Wave: Function-As-A-S ...

  3. 【转载】内存基本概念-node, zone ,page

    1. Linux描述物理内存 在linux 内存管理(一)中介绍了UMA和NUMA,Linux通过巧妙办法把UMA和NUMA的差别隐藏了起来,所谓的UMA其实就是只有一个结点的NUMA.内存的每个结点 ...

  4. [AGC058C] Planar Tree 题解

    前言 赛时没做出来,赛后把题补了.果然是 maroonrk 出的,名不虚传啊--真的很好的一道题目. 解法 题目中的圆周有以下几个性质: 圆周上如果有相邻的等值,我们可以去掉一个而不改变答案(这个很好 ...

  5. 使用VS开发人员工具观察类在内存中的布局

    1.先要生成相应文件 2.打开VS2019开发人员工具 3.cd至文件目录 4.输入cl /d1 reportSingleClassLayoutanimal demo.cpp 其中reportSing ...

  6. SpringBoot实现限流注解

    SpringBoot实现限流注解 在高并发系统中,保护系统的三种方式分别为:缓存,降级和限流. 限流的目的是通过对并发访问请求进行限速或者一个时间窗口内的的请求数量进行限速来保护系统,一旦达到限制速率 ...

  7. mysql-三元表达式函数-if

  8. [转帖]Oracle 如何列出正在运行的定时任务

    https://geek-docs.com/oracle/oracle-questions/569_oracle_how_can_i_list_the_scheduled_jobs_running_i ...

  9. [转帖]记一次探索内存cache优化之旅

    https://developer.aliyun.com/article/972803 背景 项目上线以来,曾出现上传镜像.下发镜像时可用内存不足,性能发生抖动的情况.研究发现是容器的 page ca ...

  10. [转帖]记一次sst文件损坏修复过程

    https://tidb.net/blog/54e388c8 [2023-07-14 14:26:28]应用系统报警删除数据失败,查看日志报Region is unavailable,同时企业微信群也 ...