TypeScript学习整理1

TypeScript是JavaScript的超集,提供静态类型系统和ES6+的语法支持,旨在提高代码的可读性和可靠性。使用TypeScript可以减少错误,提高开发效率,但也会增加学习和短期开发成本。文章介绍了包括原始数据类型、any类型、数组、元组、接口、函数在内的核心概念,并探讨了类型推论、联合类型和类型断言等特性。

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

一、了解TypeScript

1、编程语言类型

动态类型语言:指在运行期间才会做类型检查的语言,在使用动态语言编程的时候,不用给变量指定数据类型。可以给变量赋值为字符串,再赋值为对象,非常灵活。

如:JavaScript、Ruby、Python、Php。

静态类型语言:指在编译阶段才会做类型检查的语言,写程序时需要先声明变量的数据类型。

如:C、C++、C#、Java。

2、TypeScript是什么

TypeScript是可扩展的JavaScript(JavaScript that),或者说是JavaScript的超集。除了提供原生JavaScript的类型系统, 还提供了ES6~ES10的语法支持。

TypeScript的出现是不关注数据类型的动态语言,变为关注数据类型的静态语言。

3、为什么使用TypeScript

优点:

(1)程序更容易理解。在阅读代码时,函数或者方法输入输出的参数类型,外部条件一目了然。并且有了TypeScript代码本身就是注释。

(2)在其他插件的帮助下,开发更有效率。可以在不同的代码块和定义中跳转。代码自动补全。

(3)更少的错误。编译期间能够发现大量错误,并杜绝一些常见错误。

(4)非常好的包容性,完全兼容JavaScript。

缺点:

(1)增加了一些前端开发的学习成本,需要学习一些平时未接触的概念。

(2)短期内增加开发成本。

二、原始数据类型和any类型

最新的ECMAScript定义了8中数据类型:

7中原始类型:Boolean、Null、Undfiend、Number、BigInt、String、Symbol。

1种引用类型:Object。

let isDone: boolean = false

let age: number = 12

let firstName: string = 'jiang'
let message: string = `Hello ${firstName}`

let isDone: boolean = false

let u: undefined = undefined
let n: null = null

let num: number = undefined

当无法确定数据类型时,使用any

let notSure: any = 4
notSure = 'any'
notSure = true
notSure.myName
notSure.getName()

三、数组和元组

定义数组:

let arrOfNumber: number[] = [1, 2, 3]
arrOfNumber.push(1)
arrOfNumber.push('123) // 报错

特殊数据结构:类数组(array like object)argument, HTMLCollection等

function test() {
  conosle.log(arguments)
  arguments.length
  arguments.forEach() // 报错
  let htmlCollection: HTMLCollection
}

元组

let user:[string, number] = ['hello', 123]

四、Interface接口

对象的形状进行描述

interface IPerson {
  name:string
  age: number
}

let student:IPerson = {
  name:'jiang',
  age: 10
}

五、function 函数

function add (x: number, y: number): number {
  return x + y
}

function add (x: number, y: number, z: number?): number {
  if(typeof z === 'number') {
   return x + y + z
  }
  return x + y
}

// add:(x: number, y: number, z: number?): number
// type interface 类型推断复制过程中,变量应该是什么类型的
const add = (x: number, y: number, z: number?): number {
  if(typeof z === 'number') {
   return x + y + z
  }
  return x + y
}
interface ISum {
  (x: number, y: number, z: number?): number
}

let add1:ISum = add

六、类型推论、联合类型和类型断言

1. 类型推论type interface

// type interface类型推论
let str = 'string'

2.联合类型

// union types联合类型
let numberOrstring: number|string
numberOrstring = 'str'
numberOrstring = 123

3.类型断言

允许你覆盖它的推断,并且能以你任何你想要的方式分析它,这种机制被称为「类型断言」。TypeScript 类型断言用来告诉编译器你比它更了解这个类型,并且它不应该再发出错误。

使用 as 关键字来进行类型断言

// 类型断言不是类型转换,把它断言成联合类型中不存在的类型,会出现错误
fuction getLength(input: number | string): number{
  const str = input as string
  if (str.length) {
    return str.length
  }else {
    const number = input as number
    return number.toString().length
  }
}

4. 类型守卫type guard:typeof、instanceof

fuction getLength(input: number | string): number{
  if(typeof input === 'string') {
    return input.length
  }else {
    input.toString().length
  }
}

TypeScript学习整理2

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值