typescript学习笔记(一)--字符串、函数等新特性

本文是关于TypeScript的学习笔记,主要探讨了字符串的多行表示、模板字符串和自动拆分功能,以及函数中的generator函数。通过示例展示了如何在TypeScript中更方便地处理字符串和创建生成器函数。

一. 字符串新特性

  1. 多行字符串
    我们在js中要连接多个字符串需要使用+,而在ts中可以直接使用``即可,可自动转换成换行符
//ts
var username = 'dalei';
var sex = '女';
var age = `name
sex`;

//编译后的js
"use strict";
var username = 'dalei';
var sex = '女';
var age = "name\nsex";
  1. 字符串模板
    在js中我们如果想拼接html,需要用到各种换行符,反斜杠,ts的``可以自行转换,${}可识别变量
//ts
var sex = '女';
var age = 18;
var getName = function () {
    return  'dalei';
}
console.log(`<div>
<span>${getName}</span>
<span>${age}</span>
</div>`)

//编译后的js
"use strict";
var sex = '女';
var age = 18;
var getName = function () {
    return 'dalei';
};
console.log("<div>\n<span>" + getName + "</span>\n<span>" + age + "</span>\n</div>");
  1. 自动拆分字符串
function test(template, name, age){
  console.log(template);
  console.log(name);
  console.log(age);
}
var name = 'forrest';
var getAge = function (){
  return 18;
}
test`hello,my name is ${name},i'm ${getAge()} years old.`

控制台输出
在这里插入图片描述

二. 函数特性

rest操作符这里我就不说了,这里我就简单说一下generator函数

// *即表示generator函数,它依赖es6的yield新关键字,每次next()则执行至下一个yield
//eg1:
 function* dosomthing {
	console.log('第一步');
	yield;
	console.log('第二步');
}
dosomthing.next();
//此时控制台输出的是

在这里插入图片描述

dosomthing.next();
//此时控制台输出的是

在这里插入图片描述

//eg2:实现当股票价格大于最低价格时,再买入
function* getStockPrice (stock) {
	while (true) {
		yield Math.random()*100;
	}
}
var priceGene = getStockPrice ('hai');
let price:Number = 100;
let limitPrice = 20;
console.log(price)
while (price > limitPrice ) {
	price = priceGene.next().value;
	console.log(price)
}
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、付费专栏及课程。

余额充值