【TS】基础(一)

news2025/4/8 3:44:01

TS基础学习

  • TS(TypeScript)
  • TS的特性
  • TS的优缺点
    • 优点
    • 缺点
  • TS和JS的区别
  • TS常用类型
    • 原始类型
    • 数组
    • 类型别名 type
    • 联合类型 '|'
    • 函数
    • 对象
    • 接口 interface
      • 继承 extends
      • interface和type的区别
    • 类型断言
    • 枚举enum
    • 任意类型any

TS(TypeScript)

  • TS是JS类型的超集(在JavaScript的基础上添加静态类型定义)。
  • TS主要提供了类型系统和对TS新标准的支持。
  • 在运行TS文件时,会被编译成JS文件

TS的特性

  • 始于JS,归于JS:TS始于IS的语法和语义,最终会被编译成JS运行
  • 强大的工具构建大型应用程序:静态检查,代码重构
  • 先进的JS:提供新的和不断发展的JS特性

TS的优缺点

优点

  • 提供静态检查
  • 可读性和可维护性更好
  • 兼容JS
  • 更好的开发工具

缺点

  • 开发成本高,首次开发需要更长的时间编写代码
  • 增大项目体积,比JS文件多了类型注解

TS和JS的区别

TSJS
强类型语言弱类型语言
静态检查解释型语言
支持模块、泛型、接口不支持模块、泛型、接口
需要编译成JS文件运行直接运行

TS常用类型

原始类型

  • number
  • string
  • boolean
  • undefined
  • null
  • symbol
// 原始类型
let num: number = 22;
let str: string = 'Dliraba';
let bool: boolean = true;
let empty: null = null;
let un: undefined = undefined;
let sym: Symbol = Symbol()

TS相比JS的写法区别在,变量名后面需要写类型注解,例如’:number’

数组

数组的类型注解有两种写法:

  • string[]:数组中的元素都是字符串类型
  • Array:数组中的元素都是数字类型
// 数组
let arr: number[] = [1, 2, 3];
let arrStr: Array<string> = ['ay', 'rb', 'dl']

类型别名 type

使用type可以给指定类型定义一个名称

//类型别名 type
type Arr=number[]
let arrA:Arr=[1,22222,333333,2222222222,33333333333333333333333]

联合类型 ‘|’

将类型使用连接符"|"连接起来,
变量可以是给定类型的任意一种

//联合类型
//数组的元素可以是数字、字符串或者由数字组成的数组的任意一种
type Type1 = number | string | number[]
let arrType: Type1[] = [1, 2, 3, 'wsd',[1,8,2]]

函数

函数需要给参数返回值写类型注解
如果函数没有返回值,则写":void"

//函数  参数和返回值类型注解
function fn(val: string): string {
    return val
}
//函数没有返回值写void
function fn(val: string): void{
    val++
}

对象

需要写出对象中每个参数的类型,且参数名需要一一对应

//对象
let obj3: {name:string,age:number,sex:string} = {
    name: 'Ashely',
    age: 30,
    sex: 'women'
}

接口 interface

声明对象类型并定义一个别名
属性名后面添加’?'表示参数可选

interface Person {
    name: string,//必写参数,使用Person类型的对象中没有name会报错
    age?: number,//可选参数,对象中不写也不会报错
    sex?: string,
    id?:number
}
let obj3: Person = {
    name: 'Ashely',
    age: 30,
    sex: 'women'
}

继承 extends

interface可以使用extends继承

interface Person {
    name: string,
}
interface PersonPlus extends Person {
    phone:number
}
let obj4:PersonPlus = {
    name:'joker',//name是继承来的,不写name会报错
    phone:123123123
}

interface和type的区别

  • interface只能声明对象类型
  • type可以声明任意类型

类型断言

类型断言是一种将类型从一种形式转换为另一种形式的方法,‌尤其是在当你确信某个值具有某种类型,‌但TypeScript的类型检查器无法确认时。

两种写法:

  • 参数 as 类型
  • <类型>参数
function fn(val: any): boolean {
    return <boolean>val
}
fn(1)

谨慎使用!!!类型断言只能够欺骗TypeScript 编译器,无法避免运行时的错误,滥用类型断言可能会导致运行时错误

枚举enum

建立映射关系
字符串 = number
如果number没有指定则从0开始,后面的参数如果没有指定number则为前一个数自增1

enum Sta{
    '麻辣烫'=1,
    '拌饭',
    '板面',
    '火锅'
}
console.log(Sta[1])//打印“麻辣烫”

在这里插入图片描述

任意类型any

any是TS中特殊类型的一种,可以赋值任何数据类型的变量。‌当不确定变量的具体类型时,‌可以使用any类型。‌过度使用any类型可能会导致类型安全降低。

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

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

相关文章

为什么说脱离决策的数据分析都是无用功

如果你问我数据分析师最重要的能力是什么&#xff0c;我的回答是数据驱动决策&#xff0c;这是数据分析师最值钱的能力&#xff0c;没有之一。 因为数据的价值在于挖掘&#xff0c;与业务和市场进行关联&#xff0c;找到机会点。抛开这个&#xff0c;数据本身一文不值&#xf…

C语言笔记(第n版):知识清单

注&#xff1a;本文参考自【C reference - cppreference.com】和【C 语言参考 | Microsoft Learn】&#xff0c;颇有点借花献佛的意味…… C 程序是一系列包含声明的文本文件&#xff08;通常为头文件和源文件&#xff09;的序列。它们经过转换成为可执行程序&#xff0c;当操作…

Bugku ---Web---全题目解析 超详细步骤 持续更新

目录 1.Simple_SSTI_1 2.Simple_SSTI_2 3.滑稽 4.计算器 5.矛盾 6.GET ————————————————————分割线———————————————————— 1.Simple_SSTI_1 SSTI是服务器端模板注入 F12查看下源码 在 Flask 中&#xff0c;双大括号 {{ }} 用…

ElasticSearch父子索引实战

关于父子索引 ES底层是Lucene,由于Lucene实际上是不支持嵌套类型的,所有文档都是以扁平的结构存储在Lucene中,ES对父子文档的支持,实际上也是采取了一种投机取巧的方式实现的. 父子文档均以独立的文档存入,然后添加关联关系,且父子文档必须在同一分片,由于父子类型文档并没有…

Oracle LiveLabs实验:Improve application performance with True Cache

此实验申请地址在这里&#xff0c;时间为120分钟。 帮助见这里。 简介 参加本次动手实践研讨会&#xff0c;了解如何使用 True Cache 通过卸载查询和减少对主数据库的请求和连接数量来提高可扩展性。本次研讨会基于连接到配置了 True Cache 的主数据库的计算实例&#xff08…

从零手写实现 mybatis 系列(零)mybatis 核心特性

拓展阅读 第一节 从零开始手写 mybatis&#xff08;一&#xff09;MVP 版本 中我们实现了一个最基本的可以运行的 mybatis。 第二节 从零开始手写 mybatis&#xff08;二&#xff09;mybatis interceptor 插件机制详解 第三节 从零开始手写 mybatis&#xff08;三&#xff0…

最低工资标准数据(2001-2023年不等)、省市县,整理好的面板数据(excel格式)

时间范围&#xff1a;2001-2022年 具体内容&#xff1a;一&#xff1a;最低工资数据标准时间&#xff1a;2012-2021包含指标&#xff1a; 省份城市/区县小时最低工资标准&#xff08;非全日制&#xff09;月最低工资标准实施日期 样例数据&#xff1a; 二&#xff1a;各省最低…

Spring Cloud Gateway网关的高级特性之GatewayFilter Factories(路由过滤器)

1、GatewayFilter Factories&#xff08;路由过滤器&#xff09; 官方访问地址&#xff1a;点击这里 来自官方的解释如下图所示&#xff1a; 简单来说就是&#xff1a; 客户端向 Spring Cloud Gateway 发送请求。如果请求与某个路由匹配&#xff0c;则该请求会被传递给 Ga…

OpenEuler安装部署教程

目录 OpenEuler安装部署教程 MobaXterm一款全能的远程工具 yum安装软件 vim编辑器&#xff08;了解&#xff09; 防火墙 常用命令 网络工具netstat & telnet 进程管理工具top ps 磁盘free、fdisk 用户、组&#xff08;了解&#xff09; 权限&#xff08;了解&am…

实验3-9 三天打鱼两天晒网

//实验3-9 三天打鱼两天晒网/* 中国有句俗语叫“三天打鱼两天晒网”。 假设某人从某天起&#xff0c;开始“三天打鱼两天晒网”&#xff0c; 问这个人在以后的第N天中是“打鱼”还是“晒网”&#xff1f; */#include<stdio.h> #include<math.h> int main(){int n; …

Photoshop的下载和安装教程

找到Adobe 的官网 https://www.adobe.com/cn/ 创建一个新的账户,如果你没有账户的话 后面安装步骤来注册 下载和安装 登录之后 点击 点击 点击 然后进行下载和安装 然后就是漫长的等待 安装完成 点击 这只是一个安装Photoshop的教程,也可以根据别人的安装包来进行安装

ThreadPoolExecutor工作原理及源码详解

一、前言 创建一个线程可以通过继承Thread类或实现Runnable接口来实现&#xff0c;这两种方式创建的线程在运行结束后会被虚拟机回收并销毁。若线程数量过多&#xff0c;频繁的创建和销毁线程会浪费资源&#xff0c;降低效率。而线程池的引入就很好解决了上述问题&#xff0c;…

万字详解 MapStruct Plus,带你快速上手!

与其明天开始&#xff0c;不如现在行动&#xff01; 文章目录 前言一、为什么要用 MapStruct&#xff08;背景&#xff09;二、MapStruct Plus 的快速开始1. 引入依赖2. 指定对象映射关系3. 编写测试代码4. 运行结果5. 原理解析 三、自定义实体类中的属性转换1. 自定义一个类型…

【IO】使用父子进程完成两个文件的拷贝,父进程拷贝前一半内容,子进程拷贝后一半内容,子进程结束后退出,父进程回收子进程的资源

1、使用父子进程完成两个文件的拷贝&#xff0c;父进程拷贝前一半内容&#xff0c;子进程拷贝后一半内容&#xff0c;子进程结束后退出&#xff0c;父进程回收子进程的资源 #include <myhead.h>int main(int argc, const char *argv[]) {//判断输入的格式是否符合要求i…

预测性维护:一种基于因果技术语言处理 (CTLP) 的智能故障诊断方法

关键词&#xff1a;预测性维护、因果贝叶斯网络、ROX数据 在工业运营和维护领域&#xff0c;资产绩效最大化和风险最小化至关重要。随着工业设备组件的磨损和恶化&#xff0c;系统会表现出一系列变化&#xff0c;这些变化的严重程度会逐渐增加&#xff0c;直到最终发生故障。在…

C++_string_知识总结(初学)

基础认识&#xff1a; string严格意义上不属于STL容器&#xff0c;其出现的时间早于STL&#xff0c;这也导致了string官方库中部分函数冗余。但是这也体现了语言发展中的一个重要现象——向前兼容。和很多STL容器一样&#xff0c;string是一个类&#xff0c;核心是一个顺序表&…

MySQL:GROUP BY 分组查询

分组查询是SQL中一个非常强大的功能&#xff0c;它允许我们将数据按照一个或多个字段进行分组&#xff0c;并对每个分组进行聚合计算&#xff08;如求和、平均值、最大值、最小值等&#xff09;。在MySQL中&#xff0c;我们使用 GROUP BY 关键字来实现分组查询。 核心语法 SE…

笑出腹肌的饼图绘制秘籍:Matplotlib让你秒变数据烘焙大师!

1. 引言 亲们&#xff0c;还在为数据报告里的饼图头疼吗&#xff1f;别怕&#xff0c;Matplotlib来救场啦&#xff01;它不只是个绘图工具&#xff0c;简直是数据界的魔术师&#xff0c;让你的饼图既专业又有趣。跟我学几招&#xff0c;保证让你的观众边吃边看&#xff0c;爱不…

Linux驱动开发—编写第一个最简单的驱动模块

文章目录 开发驱动准备工作1.正常运行的Linux系统的开发板2.内核源码树3.nfs挂载的rootfs4.得心趁手的IDE 第一个Hello world 驱动程序常见模块的操作命令模块的初始化和清理模块的版本信息模块中的各种宏 示例Hello World代码printk函数解析 使用MakeFile编译驱动模块使用insm…