学习笔记——TypeScript


开发阶段规范代码,使代码更严谨

介绍

  • TypeScript(简称:TS)式微软推出的开源语言
  • TSJS的超集(TS包含JS)
  • TS = Type + JS(在JS基础上增加了类型支持
  • TS文件扩展名为.ts
  • TS可编译成标准的JS,并且在编译时进行类型检查

示例:TS与JS的比较
 // TS代码:有明确的类型,即:number(数值类型)
 let age1: number = 18

 //	JS代码: 无明确的类型
 let age2 = 18



TS增加类型支持的原因:

  • TS属于静态类型编程语言,JS属于动态类型编程语言
  • 静态类型在编译期做类型检查,动态类型在执行期做类型检查
  • 对于JS而言,需要等到代码执行时才能发现错误,相对来说发现问题比较晚
  • 对于TS而言,在代码编译时就可以发现错误,相对来说发现问题比较早
  • 配合VSCode开发工具给,TS可以提前到在编写代码的同时就发现代码中的错误,减少找bug、改bug的时间


安装typescript

npm install -g typescript

运行TS文件

TS文件不能直接运行,需要将ts文件编译成js文件,编译后js文件中类型会擦除

// 运行TS代码需要先编译,可编译成标准的二js,并且可以在编译时进行类型检查
tsc 文件名.ts

// 运行TS文件
node 文件名.js



TS常用类型

image.png


类型标注位置

  • 标注变量
  • 标注参数
  • 标注返回值
// 标注变量,指定变量 msg 的类型为string
let msg:string = 'hello ts!'

// 标注参数和返回值,指定m2函数的参数类型为string,并且返回值也为string
const m2 = (name:string):string => {
  return name.toLowerCase() + msg
}

字符串类型、数字类型、布尔类型

// 定义字符串类型的变量
let username: string = 'baobo'

// 定义布尔类型的变量
let isTrue: boolean = false

// 定义数字类型的变量
let age: number = 20

console.log(username)
console.log(isTrue)
console.log(age)

字面量类型

用于限定数据的取值范围,类似于Java中的枚举

// 字面量类型,指定参数alignment的取值只能是left、right、center
function printText(s: string, alignment: "left" | "right" | "center") {
  console.log(s, alignment)
}

printText('hello', 'left')
printText('hello', 'aaa')	// 错误:取值只能是left | right | center

interface类型

// 定义一个接口,名字为Cat
interface Cat {
  name: string,
  age: number		// 若写为 age?: number 表示当前属性可选
}

// 定义变量为Cat类型
const c1: Cat = { name: '小白', age: 1}
// const c2: Cat = { name: '小黑', age: 1, sex: '公'}	// 错误:多出sex属性
// const c3: Cat = { name: '小红' }	// 错误:缺少age属性、

console.log(c1)

class类

使用class关键字类定义类,类中可以包含属性、构造方法、普通方法

// 定义一个类,名称为User
class User {
  name: string;	// 属性
  constructor(name: string) {	// 构造方法
    this.name = name
    }
  // 方法
  study() {
    console.log(this.name + '正在学习')
  }
}

const u = new User('张三')

console.log(u.name)
u.study()
interface Animal {
  name: string
  eat(): void
}

// 定义一个类Bird, 实现上面的Animal接口
class Bird implements Animal {
  name: string
  constructor(name: string) {
    this.name = name
  }
  eat(): void {
    console.log(this.name + ' eat')
  }
}

// 创建类型为Bird的对象
const b1 = new Bird('杜鹃')
console.log(b1.name)
b1.eat()
// 定义Parrot类,并且继承Bird类
class Parrot extends Bird {
  say(): void {
      console.log(this.name + ' say hello')
  }
}

const myParrot = new Parrot('Polly')
myParrot.say()
myParrot.eat()



总结

  • TypeScript 提供了静态类型检查,能在编译时捕捉错误,提升代码的可靠性和可维护性。
  • 基本类型接口 可以帮助定义清晰的结构和行为。
  • 及其继承和接口实现提供了面向对象的编程方式,使代码更具扩展性和复用性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值