TypeScript基础使用

news2024/9/28 19:27:11

TypeScript介绍:

TypeScript 是 JavaScript 的一个超集

它的第一个版本发布于 2012 年 10 月,vue3和react也完全支持typescrpt

为什么选择 TypeScript:

  1. 类型系统实际上是最好的文档,大部分的函数看看类型的定义就可以知道如何使用了
  2. 可以在编译阶段就发现大部分错误,这总比在运行时候出错好
  3. 增强了编辑器和 IDE代码补全、接口提示、跳转到定义、重 的功能,包括构等

浏览器只能识别JS代码,TS->编译->运行

运行环境:

1.创建文件

2.编译 安装npm i typescript -g

3.tsc 文件名.ts(将他编译成js文件)

4.关于重名解决:tsc --init   生成 tsconfig.json

5.自动编译:tsc -w 

6.降级编译,在ts.config.json中,'target':'ES2015'

7.严格模式strict:

function say(content:string) {  }

8.指定编译输出路径:

 

基础语法:

基础数据类型包括:


布尔值、数值、字符串、null、undefined 以及 ES6 中的新类型 
Symbol 和 ES10 中的新类型 BigInt。

ts中使用基础类型定义变量

let count:number = 100
let name:string = '张三'
let isDone:boolean = false
let u: undefined = undefined;
let n: null = null;

数组的类型:

  1. 类型+[ ]来表示数组 
  2. let arr:number[]=[1,2,3]
  3. 数组泛型Array<元素类型>
  4. let list:Array<number>=[1,23]

对象类型:

在TypeScript中,我们使用接口Interfaces定义对象的类型(我们约束了tom接口和person)

interface Person{
   name:string;
   age:number;
 }

let tom: Person={
   name:'Tom',
   age:25
};

 

联合类型Union Types:表示取值可以为多种类型中的一种

let value:string|number='123'

 

任意类型any:任意值用来表示允许赋值为任意类型

变量如果在声明的时候,未指定其类型,那么它会被识别为任意值类型:

类型推论:TypeScript 会在没有明确的指定类型的时候推测出一个类型,这就是类型推论。

let mynumber = 'seven'

 

 

空值void:在 TypeScript 中,可以用 void 表示没有任何返回值的函数

函数的类型:

  1. 形参类型
  2. 返回值类型  void空值,无返回值
function fn(): void {
  console.log("fn >>>>");
}

function fn1(): number {
  return 100;
}

/**
 * 
 * @param name 
 * @param age 可选参数
 * @returns 
 */
function fun2(name: string, age?: number): string {
  return "姓名是" + name + " 年龄是 " + age;
}

fun2("jack",20);

 

类型断言as:

有时候你会遇到这样的情况,你会比TypeScript更了解某个值的详细信息。 通常这会发生在你清楚地知道一个实体具有比它现有类型更确切的类型。

通过类型断言这种方式可以告诉编译器,“相信我,我知道自己在干什么”。 类型断言好比其它语言里的类型转换,但是不进行特殊的数据检查和解构。

(some是一个字符串类型,starLength是一个数字类型,将string类型的Some的长度赋值给starLength)

尖括号写法:

let some:any='this is a string'

let starLength:number=(<string>some).length

 as语法:

let some:any='this is a string'

let starLength:number=(some as string).length

泛型(Generics)是指在定义函数、接口或类的时候,不预先指定具体的类型,而在使用的时候再指定类型的一种特性。

泛型的语法是尖括号 <> 里面写类型参数,一般用 T

泛型像一个占位符一个变量

 泛型方法:

 泛型约束:在函数内部使用泛型变量的时候,不知道他的类型时,不能随意使用他的属性和方法

function loggingIdentity<T>(arg:T):T{
    console.log(arg.length);
    return arg;
}
此时,T不一定包含了length,编译时会报错
function loginLength<T extends ILength>(arg:T):number{
    return arg.length
}
const len1:number = loginLength('hello')
const len2:number = loginLength([1,2,3])
// const len3:number = loginLength(100)
console.log(len1);

使用了extends约束泛型T必须符合lengthwise的形状,包含了length属性,不会报错。

类型别名:(等量代换)

type ageType = number|string // 定义一个名为ageType类型别名,表示string字符串和number类型

let age1: ageType = '100' 
let age2: ageType = '200' 
// 接口定义对象类型可以继承
interface IPerson3{
    name:string
    age:number
}
interface IPerson3{
    score:number
}
const obj2:IPerson3 = {
    name:'rose',
    age:21,
    score:99
}

元组:数组合并了相同类型的对象,而元组合并了不同类型的对象

let tom:[string,number]=['tom',25]

枚举类型: (遍历)

 

 

public:公共的,默认的属性和方法都public的

private:私有的,不能声明在他的类的外部访问

protected :受保护的,和private类似,区别是它在子类中允许被访问

 

模块:es6支持 export  export default   import

 声明文件:(文件.d.ts)

当使用第三方库时,我们需要引用它的声明文件,才能获得对应的代码补全、接口提示等功能。

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

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

相关文章

高性能SQL-数据库性能优化

数据库性能优化涉及各个方面,本文就总多个角度介绍一下数据库性能优化的方法 1.表设计 聚集索引 一个表只能有一个聚集索引&#xff0c;数据在磁盘上的排练顺序与聚集索引一致&#xff0c;根据业务仔细设定聚集索引&#xff0c;值递增的不可修改的字段才能设置聚集索引&…

海康摄像头Linux开发

官方sdk下载 https://open.hikvision.com 点击下载就行了 Ubuntu摄像头抓拍测试 我们使用Linux64 纯净版测试 接好海康摄像头&#xff0c;通电&#xff0c;并设置号ip和用户名、密码。如果有现成的&#xff0c;可以去查一下就知道了 先把设备下载的文件解压并放到Ubuntu下面…

redis的渐进式rehash机制

简述 在redis的字典&#xff08;dict.h&#xff09;实现中&#xff0c;当哈希表保存的键值对太多或者太少时&#xff0c;会触发扩展/收缩&#xff1b; 触发收缩&#xff1a;负载因子小于 0.1触发扩展&#xff1a;以下任一条件符合即可 服务器目前没有在执行 BGSAVE 命令或者 …

k8s核心资源

一、NameSpace对资源进行隔离&#xff0c;比如开发环境和测试环境等。命令# 查看所有命名空间的资源 kubectl get pod -A # 查看单独某个命名空间下的资源 kubectl get pod -n <空间名称> # 查看所有命名空间 kubectl get ns # 创建命名空间 kubectl create ns <空间名…

SpringAMQP

SpringAMQP是基于RabbitMQ封装的一套模板&#xff0c;并且还利用SpringBoot对其实现了自动装配&#xff0c;使用起来非常方便。 SpringAmqp的官方地址&#xff1a;Spring AMQP SpringAMQP提供了三个功能&#xff1a; 自动声明队列、交换机及其绑定关系&#xff08;RabbitAdmin&…

Hive自定义UDF函数及使用

目录 一、UDF概述 二、编写自定义UDF 1.创建项目 2.pom.xml文件添加依赖 3.编写工具类及自定义UDF类 4.打包 5.测试 jar 6.上传至服务器、HDFS并给jar包赋权 7.添加到hive类路径并创建临时函数 8.使用测试&#xff1a; 9.临时函数、永久函数 一、UDF概述 UDF全称&…

面试项目经验相关技巧

前言 面试问项目经验主要是想了解所做项目用到的技术&#xff0c;以及自己在项目中扮演的角色。 一、秒杀系统 秒杀系统往往不是咱的项目经验&#xff0c;但是面试可能会问&#xff0c;在说自己项目经验的时候也可以往秒杀和高并发上面带。 可能遇到的问题 高并发 一般就是…

阿里云KMS创建应用接入点

1.进入KMS控制台https://kms.console.aliyun.com/cn-beijing/applicationAP/list2.应用管理->创建应用接入点应用接入点可以想象成一个入口。入口打开的时候&#xff0c;运行在你服务器中的代码&#xff08;KMS客户端&#xff09;才可以与阿里云的KMS实例通讯。2.1设置入口名…

【软件测试】离开“浪浪山“测试人迎来的春天......

目录&#xff1a;导读前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09;前言 这几年因为疫情、经…

Activiti7工作环境搭建_创建基础工程自动创建Activiti数据库表---工作流工作笔记004

然后我们开始来搭建activiti的环境 首先给idea安装activiti插件,从插件里搜索 actiBPM注意,这个直接在idea中搜索可能搜索不到,因为太旧了这个工具,新的idea已经不支持,需要手动去actiBpm 官网下载以后手动安装 下载就可以了 下载以后点击齿轮,然后选择从硬盘安装 选择下载好的…

注册公司认缴vs实缴,选择哪一个更好?

前言 上一篇说了在创业的时候先进行选择公司类型&#xff0c;然后在公司注册过程中都需要登记公司的注册资本&#xff0c;会涉及注册资金这一点&#xff0c;而现在有认缴制和实缴制&#xff0c;到底选择哪一个更好呢&#xff1f; 在选择之前&#xff0c;先来和大家分享下认缴制…

PyG-节点分类+链接预测+异常检测示例

引言图神经网络(Graph Neural Networks)是一种针对图结构数据(如社交图、网络安全网络或分子表示)设计的机器学习算法。它在过去几年里发展迅速&#xff0c;被用于许多不同的应用程序。在这篇文章中我们将回顾GNN的基础知识&#xff0c;然后使用Pytorch Geometric解决一些常见的…

idea本地debug调试DATAX插件运行

datax官方github地址&#xff1a;GitHub - alibaba/DataX: DataX是阿里云DataWorks数据集成的开源版本。 接触datax是看重他的数据采集功能和可以扩展插件的功能&#xff0c;根据官方说明&#xff0c;DATAX是以python来调用插件的运行json配置&#xff0c;但对于二次开发插件的…

nacos权限区分

背景 nacos的默认是不进行分配权限的&#xff0c;那么这样就带来了一个问题&#xff0c;如果多项目共同使用一个nacos&#xff0c;可以带了一个情况是开发人员误操作&#xff0c;把其他项目的nacos配置文件更改或者删除。那么如何解决这个问题呢&#xff1f;就是把nacos进行分…

网络知识详解之:网络攻击与安全防护

网络知识详解之&#xff1a;网络攻击与安全防护 计算机网络相关知识体系详解 网络知识详解之&#xff1a;TCP连接原理详解网络知识详解之&#xff1a;HTTP协议基础网络知识详解之&#xff1a;HTTPS通信原理剖析&#xff08;对称、非对称加密、数字签名、数字证书&#xff09;…

Kotlin 1.8.0 现已发布,有那些新特性?

文章目录**如何安装 Kotlin 1.8.0****如果您遇到任何问题****更多文章和视频**结语Kotlin 1.8.0 版本现已发布&#xff0c;以下是其部分最大亮点&#xff1a; JVM 的新实验性功能&#xff1a;递归复制或删除目录内容提升了 kotlin-reflect 性能新的-Xdebug编译器选项&#xff…

PCB铺铜技巧如何铺铜经验总结

&#x1f3e1;《总目录》 目录1&#xff0c; 什么是铺铜2&#xff0c;铺铜的好处3&#xff0c;如何铺铜4&#xff0c;铺铜的经验原则5&#xff0c;铺铜的注意事项1&#xff0c; 什么是铺铜 铺铜是指在PCB电气层添加整块的铜皮&#xff1b;铺铜包括电源层铺铜&#xff0c;地层铺…

openofdm03:Frequency Offset Correction

载波频率偏移&#xff08;Carrier Frequency Offset&#xff0c;CFO&#xff09;&#xff1a;发射机和接收机本振频率之差&#xff0c;会造成接收到的I/Q采样值的相位旋转。This symptom of this offset is a phase rotation of incoming I/Q samples (time domain). The CFO c…

基于语义分割实现人脸图像的皱纹检测定位与分割

前言 人脸皱纹主要区分有额纹、川字纹、眼下纹、法令纹、嘴角纹&#xff0c;眼角纹等&#xff0c;在美颜相机&#xff0c;智能医美等于应用领域里&#xff0c;需要对人脸皱纹进行检测、定位、分割&#xff0c;测量等。 传统图像算法的皱纹检测 1.传统算法的皱纹检测可参考《…

仿京东PC网页商品详情的放大镜效果(原理+代码)

实现效果 黑色只不过是转gif出问题而已 准备工作 1. 访问该网址&#xff0c;理解我们要弄的放大镜效果&#xff0c;鼠标经过商品图片&#xff0c;显示一个黄色的放大选区&#xff0c;右边显示该选区的大图。 2. 获取商品图片和商品大图 【摩托罗拉moto X30 Pro】摩托罗拉mot…