TypeScript 基础语法及使用

文章目录

        • 1、概述
        • 2、快速使用
        • 3、常用类型
        • 4、基础类型
        • 5、联合类型
        • 6、函数类型
        • 7、对象类型 & 接口interface

1、概述

TypeScript(简称 TS)是JavaScript的超集(继承了JS全部语法)是微软开发的开源编程语言,可以在任何运行JavaScript的地方运行,TypeScript = Type + JavaScript。

image-20231016182655912

简单说,就是在JS的基础上,为JS添加了类型支持。

类型注解:是指在变量、函数等定义的时候,使用特定语法(: type)来指定其类型,并在代码中限制只能接收特定类型的值。

// JavaScript
let uname = 'tom';
let count = '10';// TypeScript
let uname: string = 'tom';
let count: number = 10;

为什么要用TypeScript ?

  • 有利于发现错误(编写时)

  • 有利于代码的静态分析

  • 便于语法提示和自动补全

  • 利于项目维护

2、快速使用
  • 准备:

  • 安装TS官方提供的编译器(只需要做一次即可)

    npm install -g typescript 
    
  • 编码:

    • 定义ts文件,定义变量,指定类型注解

    • 编译ts文件,测试程序运行

      image-20231016182855582

      编译命令:tsc demo.ts

      image-20231016182901520

      编译之后的文件为:demo.js

  • TS代码编译目标版本为es3(比较低),可以通过参数 –target 指定编译的目标版本。如:es5、es6、es2016… esnext

3、常用类型

TS中除了支持JS中的数据类型之外,还提供了新的实用的数据类型。 常见类型如下:

类型例子备注
字符串类型string
数字类型number整数 、小数
布尔类型booleantrue、false
null/undefined类型null / undefined表示null和undefined本身,意义不大
任意类型any没有指定任何类型
数组类型number[] / Array<number>
联合类型number | string一个值可以是几种类型之一
字面量类型‘left’ | ‘center’ | ‘right’限制变量或参数的取值,只能是其中之一
函数类型() => void对函数的参数及返回值指定类型
对象类型{…}限定对象的结构(属性及方法)
复杂类型interface接口
泛型<T>
4、基础类型

基础类型:string,number,boolean,null,undefined,any,数组。

image-20231016183200338

<script setup lang="ts">let uname: string = 'Tom';let count: number = 100;let flag: boolean = false;let abc: any = 192;console.log(`${uname}-${count}-${flag}-${abc}`)console.log('----------------------------')//数组类型let arr: number[] = [1,2,3,4,5,67]let arr2: Array<number> = [5,6,7,8];console.log(arr)console.log(arr2)let arr3: (number | string)[] = [2,3,4,'heima','chuanzhi',555];let flag2: (boolean | number)= true;flag2 = 23console. log(arr3)console.log(flag2)console.log('----------------------------')</script><template>hello 路由</template>

原则上,不推荐使用any!!! 这会让TypeScript又回到JavaScript(失去TS类型保护的优势)。

5、联合类型

联合类型:是指由两个或多个其他类型组成的类型,表示可以是其中的任意一种。

写法:类型1 | 类型2

let arr1: (string | number) = ['A','B','C',1,5,10]let flag: (boolean | number) = true;
flag = 0;
flag = 1;
flag = false;

TS中的联合类型中指定的多种类型之间使用 | 分隔,建议使用()括起来。

  • 类型别名:相当于一种自定义类型,为任意类型起别名。

  • 使用场景:当同一类型(复杂)别多次使用时,可以通过类型别名,简化该类型(复杂)的书写。

  • 定义语法:type customType = 指定类型

类型别名type,是可以为任意类型指定别名的。

tyep strNumber = (string | number)[];
let arr1: strNumArr = ['A','B','C',1,5,10]
let arr2: strNumArr = ['A','D','C',5,10]
6、函数类型
  • 函数类型实际上指的是:函数的参数及返回值的类型

  • 语法一:单独指定参数、返回值类型

    image-20231016183424890

    与JS不同,TS中函数调用时传入的参数个数必须与函数定义时参数个数一致。

  • 语法二:书写完成函数类型(同时指定参数、返回值类型)(了解,不常用)

    image-20231016183457515

  • 可选参数:在TS里我们可以在参数后使用 问号?实现可选参数的功能。而且可选参数只能出现在参数列表的最后。

    image-20231016183514149

    如果函数没有返回值,则函数的返回值类型为:void

7、对象类型 & 接口interface

对象类型

TS中的对象类型就是来描述对应的结构的(有什么类型的属性和方法)

image-20231016183611453

  • 说明:
    • 直接使用{}来描述对象的结构。属性采用 属性名:类型 的形式;方法采用 方法名():返回值类型 的形式。
    • 如果方法有参数,就在方法名后面的小括号中指定参数类型(如:say(content:string):void)。
    • 在一行中指定多个属性类型时,可以使用 逗号/分号 来分割。
    • 方法的类型,也可以使用箭头函数形式,比如:say:() => void。
    • 对象的属性或方法,也可以是可选的,此时就可以声明可选属性/方法,使用 ?(问号)来表示。

接口interface

当一个对象类型被多次使用时,我们可以使用 接口(interface)来描述对象的类型,达到 复用 的目的。

image-20231016183721661

  • 说明:
    • 接口使用 interface 关键字来声明,接口名称可以是任意合法的变量名称。
    • 接口中定义的属性或方法,结尾可以使用逗号(,)/分号(;)分隔;如果每一行只有一个属性,后面也可以不写分号(;)。

Interface(接口) 与 type(类型别名)对比

  • 相同点:都可以给对象指定类型。

  • 不同点:

    • interface(接口),只能为对象指定类型。

    • type(类型别名),可以为任意类型指定别名。

      image-20231016183908918

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/58714.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

linux---vi和vim快捷键

linux---vi和vim快捷键 1、vi2、vim 1、vi 普通模式&#xff08;Normal Mode&#xff09;&#xff1a;i 进入插入模式&#xff08;Insert Mode&#xff09; x 删除光标所在位置的字符 dd 删除整行 yy 复制整行 p 粘贴 u 撤销 Ctrl r 重做 Shift G 快速移动光标到文件的最后…

深入了解决策树:机器学习中的经典算法

✅作者简介&#xff1a;2022年博客新星 第八。热爱国学的Java后端开发者&#xff0c;修心和技术同步精进。 &#x1f34e;个人主页&#xff1a;Java Fans的博客 &#x1f34a;个人信条&#xff1a;不迁怒&#xff0c;不贰过。小知识&#xff0c;大智慧。 &#x1f49e;当前专栏…

11月上海月赛题解报告(丙组)T1

棋盘距离 内存限制: 256 Mb时间限制: 1000 ms 题目描述 在一个棋盘上&#xff0c;有两颗棋子&#xff0c;一颗棋子在第 a 行第 b 列&#xff0c;另一个颗棋子在第 x 行第 y 列。 每一步&#xff0c;可以选择一个棋子沿行方向移动一个单位&#xff0c;或沿列方向移动一个单位&am…

基于Java Web的传智播客crm企业管理系统的设计与实现

项目描述 临近学期结束&#xff0c;还是毕业设计&#xff0c;你还在做java程序网络编程&#xff0c;期末作业&#xff0c;老师的作业要求觉得大了吗?不知道毕业设计该怎么办?网页功能的数量是否太多?没有合适的类型或系统?等等。这里根据疫情当下&#xff0c;你想解决的问…

【JAVA】Java基础—面向对象编程:类与对象-类的结构(属性、方法、构造方法)

属性用于描述对象的状态&#xff0c;通常以变量的形式存在。 方法定义了对象的行为&#xff0c;可以执行特定的操作或计算。 构造方法用于初始化对象&#xff0c;可以根据需要重载以支持不同的初始化方式。 1. 属性&#xff08;字段&#xff09; 属性是类的状态或特征&…

如何学习C++游戏开发

学习C游戏开发是一个涉及多个领域的复杂过程&#xff0c;包括编程、游戏设计、图形学等。 1. **学习C基础**&#xff1a; - 掌握C的基本语法和面向对象编程。 - 学习C标准库&#xff0c;特别是STL&#xff08;标准模板库&#xff09;。 2. **理解游戏开发概念**&#xf…

RabbitMQ 篇-深入了解 RabbitMQ 安装以及 SpringAMQP 的基础使用(声明队列和交换机、发送接收消息、配置 JSON 消息转化器)

&#x1f525;博客主页&#xff1a; 【小扳_-CSDN博客】 ❤感谢大家点赞&#x1f44d;收藏⭐评论✍ 文章目录 1.0 RabbitMQ 初识 1.1 RabbitMQ 安装 2.0 数据隔离 2.1 用户管理 2.2 virtual host 虚拟主机 3.0 SpringAMQP 3.1 RabbitMQ 配置 3.2 发送消息 3.3 接收消息 3.4 Wor…

基础归一化方法 数学理论及其matlab代码

归一化是一种简化计算的方式&#xff0c;即将有量纲的表达式&#xff0c;经过变换&#xff0c;化为无量纲的表达式&#xff0c;成为标量。在多种计算中都经常用到这种方法。以下是常见的基础归一化方法&#xff1a;Min-Max 归一化&#xff0c;Z-Score 归一化、小数定标归一化、…

计算机视觉算法

计算机视觉算法是人工智能领域中的重要技术之一&#xff0c;它使计算机能够“看”并理解图像或视频内容。以下是对计算机视觉算法的详细介绍&#xff1a; 一、定义与目标 计算机视觉算法是一组计算模型和数学方法的组合&#xff0c;旨在让计算机能够自动解析图像和视频中的信息…

【Elasticsearch】Elasticsearch集成Spring Boot

Elasticsearch集成Spring Boot 概述 Spring Data Elasticsearch 介绍一、环境初始化二、实战入门1、定义数据实体类2、定义Dao层3、框架集成-SpringData-集成测试-索引操作4、框架集成-SpringData-集成测试-文档操作5、框架集成-SpringData-集成测试-文档搜索 概述 Spring Data…

Kubernetes 调度器调度策略的资源分配不均问题如何解决?

Kubernetes 调度器调度策略的资源分配不均问题如何解决? 在 Kubernetes 中,调度器调度策略可能会导致资源分配不均的问题,可以通过以下几种方法来解决: 一、资源配额和限制 设置命名空间资源配额: 可以为不同的命名空间设置资源配额,限制该命名空间可以使用的 CPU、内存…

漫漫数学之旅038

文章目录 经典格言数学习题古今评注名人小传 - 古斯塔夫福楼拜 经典格言 诗歌是一门像几何一样严格的科学。——古斯塔夫福楼拜&#xff08;Gustave Flaubert&#xff09; 古斯塔夫福楼拜将诗歌比作几何学&#xff0c;强调了诗歌创作的严谨性。他认为诗歌不仅仅是情感的流露&a…

前端md5加密

npm下载 npm install --save ts-md5页面引入 import { Md5 } from ts-md5使用 const md5PwdMd5.hashStr("123456")md5Pwd&#xff08;加密后的数据&#xff09; .toUpperCase()方法转大写

植物神经紊乱不用怕,这些维生素来帮你!

在现代快节奏的生活中&#xff0c;植物神经紊乱已成为一种常见的健康问题。你是否经常感到焦虑、失眠、疲劳&#xff0c;甚至消化不良&#xff1f;这些可能都是植物神经紊乱的表现。幸运的是&#xff0c;通过适当补充维生素&#xff0c;我们可以有效缓解症状&#xff0c;恢复身…

华为ENSP--ISIS路由协议

项目背景 为了确保资源共享、办公自动化和节省人力成本&#xff0c;公司E申请两条专线将深圳总部和广州、北京两家分公司网络连接起来。公司原来运行OSFP路由协议&#xff0c;现打算迁移到IS-IS路由协议&#xff0c;张同学正在该公司实习&#xff0c;为了提高实际工作的准确性和…

二分查找习题篇(下)

二分查找习题篇(下) 1.山脉数组的峰顶索引 题目描述&#xff1a; 给定一个长度为 n 的整数 山脉 数组 arr &#xff0c;其中的值递增到一个 峰值元素 然后递减。 返回峰值元素的下标。 你必须设计并实现时间复杂度为 O(log(n)) 的解决方案。 示例 1&#xff1a; 输入&#xf…

playground.tensorflow神经网络可视化工具

playground.tensorflow 是一个可视化工具&#xff0c;用于帮助用户理解深度学习和神经网络的基本原理。它通过交互式界面使用户能够构建、训练和可视化简单的神经网络模型。以下是一些主要的数学模型和公式原理&#xff0c;它们在这个平台中被应用&#xff1a; 1. 线性模型 线…

一篇文章让你明白Go语言之数组的定义与用法

Golang数组 1. 数组的声明示例 2. 数组的初始化初始化示例 3. 访问和修改数组元素访问和修改元素的示例 4. 数组的遍历遍历数组的示例 5. 多维数组二维数组的示例 6. 数组是值类型示例&#xff1a;数组的值传递 7. 数组与切片的区别总结 在 Go 语言中&#xff0c;数组是一种固定…

LSM-TREE和SSTable

一、什么是LSM-TREE LSM Tree 是一种高效的写优化数据结构&#xff0c;专门用于处理大量写入操作 在一些写多读少的场景&#xff0c;为了加快写磁盘的速度&#xff0c;提出使用日志文件追加顺序写&#xff0c;加快写的速度&#xff0c;减少随机读写。但是日志文件只能遍历查询…

SDL线程

文章目录 SDL线程相关 SDL线程相关 SDL线程创建&#xff1a;SDL_CreateThreadSDL线程等待: SDL_WaitThreadSDL互斥锁 :SDL_CreateMutex/SDL_DestoryMutexSDL锁定互斥: SDL_LockMutex/SDL_UnlockMutexSDL条件变量:SDL_CreateCond/SDL_DestoryCondSDL条件变量 等待通知: SDL_Con…