TypeScript学习笔记(一)

本文对比了TypeScript与JavaScript在布尔值、数字、字符串等基本类型的处理方式,并介绍了TypeScript特有的数组、枚举等类型定义,以及any、void、null等特殊类型的用法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

TypeScript学习笔记(一)

TypeScript与JavaScript类型比较:

  • 布尔值(boolean)
    TypeScript/JavaScript: 两个字面值(true/false)
//TypeScript
let isShow: boolean = false;

//JavaScript
var isShow = false;
  • 数字(number)
    TypeScript: 所有数字都为浮点数,支持十进制、十六进制、二进制及八进制字面量
    JavaScript: 所有数字都为浮点数,支持十进制、十六进制、二进制及八进制【八进制在严格模式下无效】字面量
//TypeScript
let age: number = 18;

//JavaScript
var age = 18;
  • 字符串(string)
    TypeScript/JavaScript: 使用双引号(”)或单引号(’)表示字符串
    TypeScript: 还可以使用模板字符串,可以定义多行文本和内嵌表达式。使用反引号(`),并且以${ expr }形式嵌入表达式
//TypeScript
let str: string = 'typescript';

let sentence: string = `Hello ${ str }.`;

//JavaScript 
var str = 'javascript';

var sentence = 'Hello ' + str +'.';
  • 数组(Array)
    TypeScript: 两种定义数组的方式
    JavaScript: 可通过构造函数/字面量创建数组
//TypeScript
let list: number[] = [1, 2, 3];

let list: Array<number> = [1, 2, 3]; //使用数组泛型,Array<元素类型>

//JavaScript
var list = [1, 2, 3];

var list = new Array(1, 2, 3);
  • 枚举(enum)
    TypeScript: 枚举类型是对JavaScript标准数据类型的补充
//TypeScript
enum Colors {Red, Yellow, Blue}/*默认从0开始为元素编号*/
let color: Colors = Colors.Yellow; //1 

////////////////////////////////
//以上代码相对应的JavaScript代码
///////////////////////////////
var Colors;
(function (Colors) {
    Colors[Colors["Red"] = 0] = "Red";
    Colors[Colors["Yellow"] = 1] = "Yellow";
    Colors[Colors["Blue"] = 2] = "Blue";
})(Colors || (Colors = {}));
var color = Colors.Yellow;
//TypeScript
enum Colors {Red = 1, Yellow, Blue};//改为从1开始编号
let color: Colors = Colors.Yellow;//2

enum Colors {Red = 1, Yellow  = 3, Blue = 5};//全部手动赋值
let color: Colors = Colors.Yellow;//3
let colorName: string = Colors[3];//Yellow
  • Any
    TypeScript: 用于为不清楚类型的变量指定一个类型
  • Void
    TypeScript: 表示没有任何类型,一般用于表示函数返回值
//TypeScript
function voidFunc(): void {
    console.log('This is voidFunc.');
} 
  • null和undefined
    TypeScript: undefined和null两者各自有自己的类型分别叫做undefined和null
let u: undefined = undefined;
let n: null = null; 
  • never
    TypeScript: 表示永不存在的值的类型,never类型是任何类型的子类型,也可以赋值给任何类型

参考文档

TypeScript 作为 JavaScript 的超集,通过引入类型系统、泛型、接口等特性,为前端开发来了更高的类型安全性与代码可维护性。对于初学者而言,掌握其基础知识和使用方法是迈向高效开发的第步。 ### 类型系统基础 TypeScript 的核心在于其强大的类型系统,包括基本类型(如 `number`、`string`、`boolean`)、数组类型、元组类型、枚举类型等。例如,可以显式地声明变量的类型: ```typescript let age: number = 25; let name: string = "Alice"; ``` 此外,还可以使用联合类型(Union Types)来表示个值可以是几种类型之: ```typescript let id: number | string; id = 123; // 合法 id = "abc"; // 合法 ``` ### 接口与类型别名 TypeScript 提供了 `interface` 和 `type` 两种方式来定义自定义类型。`interface` 更适合用于描述对象的形状,而 `type` 则适用于定义联合类型或更复杂的类型组合。例如: ```typescript interface User { name: string; age: number; } type ID = number | string; ``` 两者都可以实现类型定义,但在某些场景下选择其中之更为合适。比如,`interface` 支持继承和实现,适合定义类的结构;而 `type` 更加灵活,可以用于定义联合类型。 ### 泛型 泛型允许在定义函数、接口或类时,不预先指定具体的数据类型,而是在使用时再指定。这种机制提高了代码的复用性和灵活性。例如,定义个通用的数组函数: ```typescript function identity<T>(arg: T): T { return arg; } let output = identity<string>("Hello"); // 返回类型为 string ``` ### Vue 3 中的 TypeScript 使用 在 Vue 3 中,TypeScript 可以与 Composition API 结合使用,提供更强大的类型推导能力。例如,在组件中使用 `ref` 和 `defineComponent`: ```typescript import { defineComponent, ref } from 'vue'; export default defineComponent({ setup() { const message = ref('Hello, Vue with TypeScript!'); return { message }; } }); ``` 通过显式指定泛型参数,可以确保类型的安全性。例如,声明个字符串数组: ```typescript const list = ref([] as string[]); ``` ### 实战建议 1. **快速掌握核心**:建议在 2 小时内通读基础类型、接口、泛型以及 Vue 3 组件的 `props` 和 `emits` 类型声明。 2. **实战开发**:使用 Vite 创建 Vue 3 + TypeScript 项目,实现表单验证的组件,结合 `ref`、`computed` 和类型断言。 3. **深入生态**:学习 Vue Router 和 Pinia 的 TypeScript 用法,完成个简单的单页应用(如博客列表 + 用户状态管理)。 ### 学习资源推荐 - **官方文档**:TypeScript 官方文档和 Vue 3 + TypeScript 官方指南是权威的学习资料。 - **工具链**:TypeScript Playground 可用于在线调试 TypeScript 代码,而 Vue Language Server 是 VSCode 中 Vue + TypeScript 的最佳插件。 通过以上内容的学习和实践,可以快速上手 TypeScript,并在实际项目中应用其特性,提升代码质量和开发效率[^1]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值