Typescript其他数据类型(二)

目录

Object对象

那我们想添加一个可有可无的属性,如何写?

那我们想添加多个可有可无的属性,如何写?

那定义函数如何限制参数呢?

数组 Array

数组的类型声明

我们想定义任意类型数组咋写?

特殊的数组--元组tuple

枚举enum

补充


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的数据类型就讲完啦,学会了吗~

猜你喜欢

转载自blog.csdn.net/qq_41579104/article/details/129088045
今日推荐