TypeScript核心类型概览与应用-1

TypeScript入门

1.TypeScript介绍

TypeScript 是一种由微软开发的开源编程语言,它是JavaScript的一个超集,也就是说任何有效的JavaScript代码也是有效的TypeScript代码。TypeScript在JavaScript的基础上添加了静态类型定义、类、接口、命名空间等特性,旨在解决JavaScript在大型应用开发中遇到的可维护性、可扩展性和编译时错误检查等问题。

TypeScript简介

  • 静态类型检查:TypeScript 引入了静态类型系统,允许开发者在编码阶段就发现类型错误,而不是等到运行时。这有助于提高代码质量和开发效率,减少因类型不匹配导致的错误。
  • 类和接口:提供了面向对象编程的特性,如类(class)、继承、接口(interface)等,使得代码结构更清晰,易于复用和维护。
  • 强大的IDE支持:由于类型信息的存在,IDE和编辑器(如Visual Studio Code)能够提供智能感知、自动完成、接口提示等高级功能,极大提升开发体验。
  • 兼容JavaScript:TypeScript被编译成纯JavaScript代码,因此可以无缝集成到现有的JavaScript项目中,同时也能利用现有的JavaScript库和框架。
  • 模块化:支持ES6模块化,有助于组织大型代码库,提高代码的可维护性和可重用性。

相比JavaScript的优势

  1. 类型安全:静态类型检查可以提前捕捉到很多潜在错误,避免了在运行时因为变量类型问题引发的异常,提高了程序的健壮性。
  2. 更好的开发工具支持:由于类型信息的存在,编辑器和IDE能提供更加精准的代码补全、接口文档提示、重构支持等,提升了开发效率。
  3. 易于维护和协作:随着项目规模的扩大,清晰的类型定义和面向对象的特性让代码更加结构化,便于团队成员理解和维护。
  4. 长期可维护性:类型注解作为代码的一部分,形成了“代码的文档”,有助于新加入项目的开发者更快地理解代码结构和意图。
  5. 准备未来:TypeScript支持并鼓励使用ES6及以后的新特性,即使当前环境不支持这些特性,TypeScript也能将其编译为向后兼容的JavaScript代码,帮助开发者过渡到未来的JavaScript标准。

2.编译并运行TS代码

  1. 创建hello.ts文件

    1. const info : string = 'hello ts';
      
      console.log(info)
      
      
  2. 将TS文件编译为JS文件,在终端中输入命令 tsc .\hello.ts (此时该目录下会生成一个同名的JS文件)

    1. image-20240506074107694
  3. 执行JS代码,在终端中输入命令 node hello.js (即可执行刚刚的js文件)

    1. image-20240506074126859

需要注意的是,TS编译生成的JS文件中,代码中就没有类型的信息了。

image-20240506074614754

2.1.简化运行ts步骤

简化方式 通过ts-node包,可以直接在node中运行ts代码,不用每次再使用ts进行编译 在使用node进行运行

npm i -g ts-node

# 使用 就可以实现编译运行两步操作
# 注意 ts-node 并没有生成js文件,他在内部偷偷帮你转换,并且运行
ts-node hello.ts 

image-20240506075012630

3.TS中的常用类型

在TypeScript(TS)中,类型系统是其核心特性之一,为JavaScript增添了静态类型检查的能力,从而提高代码的可维护性和安全性。

也可以将TS中测常用基础类型细分为两类:

  1. JS已有类型
    • 原始类型:number/string/boolean/null/undefined/symbol
    • 对象类型:object(包括 数组、对象、函数等对象)
  2. TS新增类型
    • 联合类型、自定义类型、接口、元组、字面量类型、枚举、void、any等

以下是TypeScript中一些常用且重要的类型:

  1. 基本类型

    • string:用于文本字符串。
    • number:用于数值,包括整数和浮点数。
    • boolean:布尔值,只能是truefalse
    • nullundefined:表示空值或未定义的值,TypeScript 中它们是所有类型的子类型。
    • void:表示没有任何返回值的函数。
    • never:表示永远不会出现的值的类型,常用于抛出异常或无限循环的函数。
  2. 数组类型

    • 使用Array<元素类型>元素类型[]定义,例如number[]表示一个数字数组。
  3. 元组(Tuple)

    • 定义固定长度和类型的数组,例如[string, number]表示一个数组,其第一个元素为字符串,第二个元素为数字。
  4. 对象类型(Object)

    使用接口(interface)或类型别名(type)来描述对象结构,如:

    interface Person {
          
          
      name: string;
      age: number;
    }
    
  5. 枚举(Enum)

    • 用于定义一组命名的常量,如:

      1enum Color {Red, Green, Blue}
      
  6. 任意类型(any)

    • 表示可以是任何类型,使用时需谨慎,因为它绕过了类型检查。
  7. 联合类型(Union Types)

    • 使用管道符号|分隔,表示一个值可以是多种类型中的一种,如string | number
  8. 类型断言(Type Assertion)

    • 用来告诉编译器某个值的类型,形式为value as Type
  9. 字面量类型(Literal Types)

    • 直接使用具体的值作为类型,如const answer: 42 = 42;
  10. 索引签名(Index Signatures)

    • 用于定义对象中动态属性的类型,如{ [key: string]: any }
  11. 类(Class)和接口

    • 类用于创建对象的蓝图,接口用于定义类或对象的形状。
  12. 泛型(Generics)

    • 提供了编写可重用组件的方式,这些组件可在多种数据类型上工作,如Array<T>

3.1.TS中的类型注解

示例代码:

// 只需要在 变量后面 : 具体的类型 即可
let age : number = <
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值