目录
Object对象
// object表示一个js对象
let a: object;//一般不用
// 对象一
a = {};
// 对象二,function也代表一个对象
a = function () { };
在开发中我们一般不关心他是不是一个对象,而是关心对象中包含了什么属性
// {} 用来指定对象中可以包含哪些属性,要求赋值的时候定义的结构一模一样,否则就会报错
// 语法:{属性名:属性值,xxx,xxx}
let b: { name: string };
b = {name:'小锁'}
注意:{} 用来指定对象中可以包含哪些属性,要求赋值的时候定义的结构一模一样,多一个或少一个属性都不行,否则就会报错
那我们想添加一个可有可无的属性,如何写?
在属性名后面加一个问号即可,就可以表示属性age是可选的,此时不管我们多一个age还是少一个age都不会报错
那我们想添加多个可有可无的属性,如何写?
有人说,那我都定义一遍
这样就会显示的很繁琐
此时我们可以用一种方式来表示任意属性
如下: [propName:string]:any 其中propName可以命名为任意名字,例如 [xx:string]:any 也行,仅代表属性名,整体表示任意类型的属性。
那定义函数如何限制参数呢?
可以写为类似箭头函数的那种形式
此时我们来定义具体的函数是不会报错的,当然多一个或少一个参数、或者类型又不一样都会报错
总结:设置函数结构的类型声明如下
语法:(形参1:类型1, 形参2:类型2,….)=>返回值
对象就讲完啦~
数组 Array
数组的类型声明
1、声明一个数字类型的数组,即 类型+[] 或者 Array<类型> 均可
当里面出现非数字类型数据时就会报错。
我们想定义任意类型数组咋写?
用any就好了呀。例如:let c:Array<any>,但不建议使用any,尽量明确类型
这时候ts的优势就出来了,当我们定义一个数组时,他会提示数组相关的所有方法供使用。
当有了类型约束之后,我们想要push一个非数字类型的数据是会报错的
在js中有一种类数组arguments,他很像数组,但又不是数组,他没有数组那么多的属性和方法,例如
当我们将arguments赋值给arr的时候也是会报错的,由此说明他两不是一个类型
特殊的数组–元组tuple
元组就是固定长度的数组,跟数组非常类似,只不过是将数据类型写到数组里面,
通俗来讲,元组就是一定程度上限制了数据类型的数组
元组本身也属于数组,因此同样存在数组的所有属性和方法
当我们push一个字符串或者数字是可以的,因为元组可以被认为是联合类型数组,当push一个布尔值就会报错
枚举enum
把所有可能的结果列举出来,通过enum表示他是枚举类型
// 枚举
enum Gender {
male = 0,
female = 1,
}
// 使用
// let i: { name: string; gender: 0 | 1 };
// 等价于
let i: { name: string; gender: Gender };
i = {
name: "小锁",
gender: Gender.male, // 等价于gender: 0
};
补充
(1)对象中同时拥有多个属性,通过符号 & 来限制
(2)类型的别名
如果我们想对一个属性定义多个可能性的值,像如下写法会显得及其繁琐和重复
let k: 1 | 2 | 3 | 4 | 5;
let l: 1 | 2 | 3 | 4 | 5;
如何解决?我们可以通过设置类型别名的方式来简化冗余的代码
// 类型的别名
type myType = 1 | 2 | 3 | 4 | 5;
let k: myType;
let l: myType;
// 使用
k = 3
此时ts的数据类型就讲完啦,学会了吗~
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/149650.html