当前位置: 首页 > news >正文

TypeScript类型

TypeScript 是什么?

  • 是以avaScript为基础构建的语言
  • 个一JavaScript的超集。
  • 可以在任何支持JavaScript的平台中执行。
  • TypeScript扩展了JavaScript,并添加了类型。
  • TS不能被JS解析器直接执行,需要编译成js。

基本类型

声明完变量直赴进行赋值
let c: boolean = false;

如果变量的声明和赋值是同时进行的,TS可以自动对变量进行类型检测
let c = false;
c = true;

JS 中的函数是不考虑参数的类型和个数的

function sum(a, b){return a + b;
}
sum( 123, 456); // 579
sum( 123, "456"); // 123456

如果是ts,参数类型限制,个数也有限制
在参数小括号后面加类型设置函数的返回值

function sum(a:number, b:number):number{return a + b;
}
sum( 123, 456); // 579 
自动类型判断

。 TS拥有自动的类型判断机制
。当对变量的声明和赋值是同时进行的,TS编译器会自动判断变量的类型。所以如果你的变是的声明和赋值时同时进行的,可以省略掉类型声明。

类型

类型例子描述
number1,-33,2.5任意数字
string*hi’, “hi”, hi任意字符串
booleantrue、false布尔值true或false
字面量其本身限制变量的值就是该字面量的值
any*任意类型
unknown*类型安全的any
void空值(undefined)没有值 (或undefined)
never没有值不能是任何值
object{“key”:“value”}任意的]S对象
array[1,2,3]任意]S数组
tuple[4,5]元素,TS新增类型,固定长度数组
enumenum(A. B)枚举,TS中新增类型

使用

// 字面量
let a:10;
a = 10;// a只能等于 10.let sex : "male" |"female";
sex = "male"
sex = "female" // sex 只能等于这两个值// any 表示的是任意类型,一个变量设置类型为any后相当于对该变量关闭了TS的类型检测// 使用TS时,
let d: any;
// 声明变如果不指定类型,则TS 解析器会自动判断变的类型为any(隐式的any)
let d;
d = 10;
d = 'hello';
d = true;let e:unknown;
e = "hello"
e = 10
e = false;
let s :string// d的类型是any,它可以赋值给任意变量
s = d;
e = 'hello';
// unknown 实际上就是一个类型安全的any。 unknown美型的变量,不能直接赋值给其他交量。
// 解决1:可以通过判断类型来解决赋值
if(typeof e ==="string"){s =e;
}
// 解决2:类型断言,可以用来告诉解析器变最的实际类型
s = e as string; // 语法1:变 as 类型
s = <string>e;   // 语法2:<类 变量// never 表示永远不会返回结果
function fn2(): never{throw new Error(报错了!);
}//  用来指定对象中可以包含哪些属性
// 语法: {属性名: 属性值,属性名: 属性值}
// 在属性名后边加上?,表示属性是可选的
let b: (name: string, age?: number};
b = {name:孙悟空,,age: 181};
// [propName: string]: any 表示任意类型的属性
let c: (name: string, [propName: string]: any}
c ={ name:'猪八戒',age: 18,gender:'男'; }//设置函数结构的类型声明:
//语法:(形参: 类型,形参: 类型 ...) => 返回值let d: (a: number ,b: number)=>number;
d = function (n1: number ,n2: number ): number{return 10;
}// 数组的类型声明:
//语法1: 类型[]
// 语法2:Array<类型>
// string[] 表示字符串数组
let e: string[];
e = ['a','b','c'];
let g: Array<number>;
g = [123];//元组,元组就是固定长度的数组
//语法:[类型,类型,类型]
let h: [string, number];
h = ['hello'123];enum Gender{Male =0Female = 1
}
let i:{name: string,gender: Gender)
i={name:"zhangsan",gender:Gender.Male // 0
}
console.log(i.gender === Gender.Male)

补充

// &表示同时要满足
let j: { name: string } & { age: number };
// j = {name:"孙悟空",age: 181}// 美型的别名
type myType = 1 1 2 1 3 1 4 1 5;
let k: myType;
let m: myType;
k =2;
http://www.lryc.cn/news/90609.html

相关文章:

  • Integer源码
  • 【四】设计模式~~~创建型模式~~~建造者模式(Java)
  • MarkDown的基本使用方法
  • IDEA 安装配置步骤详解
  • 【网络】· 路由器中配置单臂路由和DHCP,VTP原理
  • Python 子域名扫描工具:使用多线程优化
  • 宝塔面板一键部署Z-Blog博客 - 内网穿透实现公网访问
  • 深入理解设计原则之单一职责原则(SRP)
  • 钉钉群通过短信转发器接收手机短信消息
  • 【C++模版】模版进阶 {非类型模版参数; 模版的特化; 模版的分离编译; 模版总结}
  • Azure Active Directory 的功能和优势
  • mysql查询语句执行过程及运行原理命令
  • 可视化探索开源项目的 contributor 关系
  • SpringBoot 实现启动项目后立即执行方法的几种方式
  • 2021第十二届蓝桥杯Python组国赛【真题+解析+代码】
  • 3D引擎渲染管理系统概览
  • 蔚来Java实习面经
  • nginx 搭建http-flv(rtmp)流媒体的一次尝试
  • Unity 工具 之 Azure 微软语音合成普通方式和流式获取音频数据的简单整理
  • 【A卡,Windows】stable diffusion webui下载安装避坑指南
  • 并发编程-系统学习篇
  • 在浏览器网页上使用JavaScript如何将mp4视频转换成gif动态图片
  • Nginx网络服务——主配置文件-nginx.conf
  • Java Map集合
  • 数据库中的中英文术语大全
  • 调用华为API实现身份证识别
  • 一个简单的基于C/S模型的TCP通信实例
  • VMware ESXi 8.0b Unlocker OEM BIOS 集成 REALTEK 网卡驱动和 NVMe 驱动 (集成驱动版)
  • ShardingSphere笔记(三):自定义分片算法 — 按月分表·真·自动建表
  • SpringBoot 如何实现文件上传和下载