在前端开发领域,Vue3 与 TypeScript 的组合备受青睐。Vue3 带来高效灵活的开发体验,TypeScript 则提供强大的类型安全和可维护性。本文将详细介绍如何使用 Vue3 和 TypeScript 进行开发,文章内容将按照以下顺序展开:
一、环境准备
1.安装 Node.js:
- 从Node.js 官方网站下载并安装适合操作系统的版本。
2.创建 Vue 项目:
- 使用 Vue CLI 创建新的 Vue3 项目,并选择 TypeScript 作为语言选项。在终端执行以下命令:
npm install -g @vue/cli
vue create my-vue3-ts-project
- 创建项目时,选择 “Manually select features”,然后勾选 “TypeScript” 选项。
二、项目结构
典型的 Vue3 + TypeScript 项目结构如下:
my-vue3-ts-project/
├── node_modules/
├── public/
│ ├── favicon.ico
│ └── index.html
├── src/
│ ├── assets/
│ ├── components/
│ ├── composables/
│ ├── router/
│ ├── store/
│ ├── types/
│ ├── views/
│ ├── App.vue
│ └── main.ts
├──.browserslistrc
├──.eslintrc.js
├──.gitignore
├── babel.config.js
├── package-lock.json
├── package.json
├── README.md
└── tsconfig.json
三、TypeScript 的类型系统详解及基本语法和高级语法介绍
TypeScript 是一种强类型的编程语言,它的类型系统和语法为开发者提供了强大的工具来确保代码的正确性和可维护性。
(一)基本类型
包括boolean
、number
、string
、null
、undefined
和symbol
。
let isDone: boolean = false;
let decimal: number = 6;
let name: string = "Alice";
let u: undefined = undefined;
let n: null = null;
let sym: symbol = Symbol();
(二)数组类型
可用类型加方括号或泛型数组类型表示。
let list: number[] = [1, 2, 3];
let list: Array<number> = [1, 2, 3];
(三)元组类型
表示已知元素数量和类型的数组,各元素类型不必相同。
let tuple: [string, number];
tuple = ["hello", 42];
(四)枚举类型
定义一组命名常量,成员值可默认递增或手动指定。
enum Color {
Red,
Green,
Blue,
}
let c: Color = Color.Green;
enum Color {
Red = 1,
Green = 2,
Blue = 4,
}
(五)函数类型
指定参数和返回值类型,也可用类型别名定义函数类型。
function add(a: number, b: number): number {
return a + b;
}
type AddFunction = (a: number, b: number) => number;
let addFunc: AddFunction = add;
(六)对象类型
用接口或类型别名定义。
interface Person {
name: string;
age: number;
}
let person: Person = {
name: "Alice",
age: 30,
};
type Person = {
name: string;
age: number;
};
let person: Person = {
name: "Alice",
age: 30,
};
(七)可选属性和只读属性
用?
表示可选属性,readonly
表示只读属性。
interface Person {
name: string;
age?: number;
readonly id: number;
}
(八)联合类型和交叉类型
联合类型表示值可为多种类型之一,交叉类型将多个类型合并为一个。
let value: string | number;
value = "hello";
value = 42;
interface A {
a: number;
}
interface B {
b: string;
}
type