当前位置:网站首页>Typescript基本类型---下篇
Typescript基本类型---下篇
2022-08-11 08:48:00 【前端小白在前进】
ts专栏 ===> typescript入门到拔高(持续更新中…)
类型
类型 | 例子 | 描述 |
---|---|---|
object | {name:‘孙悟空’} | 任意的JS对象 |
array | [1,2,3] | 任意数组 |
tuple | [4,5] | 元组,TS新增类型,固定长度数组 |
enum | enum{A, B} | 枚举,TS中新增类型 |
object
object表示一个js对象
let a : object;
a = {
};
//function也是一个对象
a = function (){
};
在实际开发中我们不会这样去书写对象,我们会采取以下的写法:
let b : {
name:string,age?:number};
b = {
name:'孙悟空'};
{} 用来指定对象中可以包含哪些属性
语法 :{属性名:属性值}
在属性名后面加上一个?
表示属性是可选的
(可填可不填)
let c : {
name:string,[propName:string]:any};
c = {
name : 'xxx',age : 18,sex : '男'}
[propName:string]:any 表示任意类型的属性
函数
设置函数结构的类型声明:
语法:(形参:类型,形参:类型…) => 返回值
let d : (a:number,b:number)=>number;
d = function (fn1,fn2){
return fn1 + fn2
}
这种写法是先定义再去书写函数,直接一条龙写法如下:
function fn1(a : number,b : number):number {
return a + b
}
//es6箭头函数写法
let cc = (a:number,b:number) : number => {
return a + b
}
array
数组的类型声明:
语法:
类型[]
或Array<类型>
例子:
string[] 表示字符串数组let e : string[]; e = ["a",'b','f']; let g : Array<string>; g = ['1','3','5']
number[] 表示数值数组
let f : number[]; f = [1,2,3];
tuple(元组)
元组的通俗定义: 元组就是
固定长度的数组
语法:
[类型,类型]
let h : [string,string]; h = ['hello','abc'];
enum(枚举)
直观定义: 事先考虑到某一变量可能取的值,尽量用自然语言中含义清楚的单词来表示它的每一个值,这种方法称为枚举方法,用这种方法定义的类型称枚举类型。比如:性别中的男和女,在枚举中可以用0和1表示
写法代码如下:
enum Gender {
Male,
Female
}
let i : {
name:string,sex:Gender};
i = {
name : 'james',
sex : Gender.Male
}
&
的使用
在上篇我们讲到了特殊符号|
,它表示或者
的意思,而在这里&
表示并且的意思,它在ts中使用如下:
//& 表示同时
let j : {
age : number} & {
name : string}
j = {
age:15,name:'xxx'}
类型别名
通俗解释: 你自己专门设置一个“类型
”,当取值的时候按照你这个类型要求取即可。
示例代码如下:
type myType = 1 | 2 | 3 | 4 | 5
let k : myType = 2
let l : myType = 5
let m : myType = 1
在这里我设置了
myType
类型,我自己设置的类型要求可以从1-5任意取一个值,当我要取值的时候,直接将声明的变量指定我自己设置的myType
类型,便可以实现只能从1-5之间选取一个数。
小结
在下篇中讲到了平常项目开发中用到最多的元素:数组、对象、函数,ts中数组的写法无非是限制了数组的类型,一个数组不会再像js那样出现多个类型属性,而是去指定这个数组的类型,比如:如果我们限制了数组的类型number,我们数组中的元素就只能是number类型。
对象和函数无非都是加上了ts专门的限制而已。
边栏推荐
- Swagger简单使用
- CIKM 2022 AnalytiCup Competition: Federal Heterogeneous Task Learning
- Kali penetration test environment set up
- One network cable to transfer files between two computers
- mysql添加用户以及设置权限
- 机器学习(二)线性回归
- Continuous Integration/Continuous Deployment (2) Jenkins & SonarQube
- IPQ4019/IPQ4029 support WiFi6 MiniPCIe Module 2T2R 2×2.4GHz 2x5GHz MT7915 MT7975
- MySql的索引
- What should I do if the mysql data query causes the cup to be full because the query time span is too large
猜你喜欢
What should I do if the mysql data query causes the cup to be full because the query time span is too large
小目标检测3_注意力机制_Self-Attention
picker选择器出现object解决办法
关于架构的认知
Machine Learning Summary (2)
Redis 只会用缓存?20种妙用让同事直呼牛X(荣耀典藏版)
One network cable to transfer files between two computers
The no-code platform helps Zhongshan Hospital build an "intelligent management system" to realize smart medical care
进阶-指针
IPQ4019/IPQ4029 support WiFi6 MiniPCIe Module 2T2R 2×2.4GHz 2x5GHz MT7915 MT7975
随机推荐
分门别类输入输出,Go lang1.18入门精炼教程,由白丁入鸿儒,go lang基本数据类型和输入输出EP03
2022年值得关注的NFT发展趋势
Nuget can't find the package problem
Go 语言的诞生
迷你图书馆系统(对象+数组)
Creo9.0 特征的成组
研发了 5 年的时序数据库,到底要解决什么问题?
设置Vagrant创建的虚拟机名称和内存
程序员是一碗青春饭吗?
Essential C# scripting skills for Unity developers
Nuget找不到包的问题处理
仙人掌之歌——大规模高速扩张(1)
Mysql JSON对象和JSON数组查询
Openlayers Aggregate Graph, Weight Aggregate Graph, and Aggregate Graph Click Events
优炫数据库支持多列分区吗?
音视频+AI,中关村科金助力某银行探索发展新路径 | 案例研究
CIKM 2022 AnalytiCup Competition: Federal Heterogeneous Task Learning
picker选择器出现object解决办法
Kotlin算法入门兔子数量优化及拓展
观察表情和面部,会发现他有焦虑和失眠的痕迹