2、详细版易学版TypeScript - 类型声明:字符串数字null布尔undefined数组any对象void类型推断联合类型

文章详细介绍了TypeScript中不同类型的声明方式,包括字符串、数字、布尔、undefined和null、数组、对象、any和void类型。强调了在严格模式下对undefined和null的处理,以及使用any类型时可能带来的风险。还提到了类型推断和联合类型的概念。
摘要由CSDN通过智能技术生成

根据官方 TypeScript 的注意事项,建议不要使用 Number、String、Boolean、Symbol 或 Object

ts各类型声明的代码如下:

一、字符串类型

let str: string = 'hello';
str = 'ts';

二、数字类型

let num: number = 123;
num = 456;

三、布尔类型

let flag: boolean = true;
flag = false;

四、undefined和null

// tsconfig.json 的 "strict": false 时,可以把undefined和null赋值给其他类型的变量
// tsconfig.json 的 "strict": true 时, 🙅不可以把undefined和null赋值给其他类型的变量
let str1: string = undefined;
let num1: number = null;

tsconfig.json 的 "strict": true 时,查看报错:

1、

2、

五、数组

// 1、空数组:可以不规定数组元素的类型
let arr1: [] = [];

// 2、非空数组:需要规定数组元素的类型
// 定义数组方式一:普通写法  元素类型[]
let arr2: number[] = [];
let arr3: number[] = [1, 2, 3];
// 定义数组方式二:泛型写法  Array<元素类型>
let arr4: Array<number> = [];
let arr5: Array<number> = [4, 5, 6];

六、对象

let obj: object = {};
// 不能将 number、string、boolean 赋值给对象
obj = 123; // 报错
obj = 'str'; // 报错
obj = true; // 报错
// tsconfig.json 的 "strict": false 时,可以把undefined和null赋值给obj
// tsconfig.json 的 "strict": true 时, 🙅不可以把undefined和null赋值给obj
obj = null;
obj = undefined;
obj = [];
obj = new String();
obj = String;

假如将 number、string、boolean 赋值给对象,查看报错:

1、

2、

3、

七、any:任何类型

如果我们🤷不知道声明的变量要接受什么类型的值,可以用any,帮助代码通过编译阶段

let test: any = 123;
// 优点:任何类型的值都可以赋给test
test = "str";
test = null;
test = [];
// ......
// 缺点:arr6的每个元素设置成了any后,ts编译器不会对每个元素做类型检查,当js运行代码时第10行代码就会报错
let arr6: any[] = [1, 2, 3, "str", false];
console.log(arr6[0].split(' ')); // js运行时会报错,因为数字1没有split()方法

js运行时报错,查看报错:

八、void:空值

void表示没有任何类型、没有任何返回值。

通常用于函数,void表示该函数没有返回值,调用该函数会得到undefined,相当于在函数内部 return undefined。

function func(): void {
    console.log("这是void");
}
console.log(func()); // undefined

// void只能给undefined定义类型,因为void就是表示没有任何类型
let un1: void = undefined;
// 👆上面那样写没什么意义,因为undefined本身就是一个类型,等价于👇下面这样写
let un2: undefined = undefined;

九、类型推断

ts在变量没有明确指定类型时会推测一个类型

// 1、定义变量时,给变量赋值,值是什么类型ts就会推断这个变量时什么类型
let test1 = '123';
// test1 = false; // 报错

// 2、定义变量时,没给变量赋值,相当于any类型
let test2;
test2 = [];
test2 = {};
test2 = 123;
test2 = null;

十、联合类型

明确指定值可以使用哪几种类型,比any类型更好一点

let all: number | string | boolean = "";
// 联合类型只能访问指定的类型的共有属性和方法,例如它们的toString()方法
console.log(all.toString());
// 要么是访问最后一次赋值的类型的方法,否则会报错
all = true;
console.log(all.split(" ")); // 报错,因为boolean类型没有split()方法
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值