初学者这样玩 TypeScript,迟早进大厂系列!

val3 = val1=${val1}, val2==${val2};

console.log(val3);

4. TypeScript 数组与元祖
  • 数组类型

  • 元祖类型

// 数组类型

// 方式一

// 需求: 要求定义一个数组, 这个数组中将来只能存储数值类型的数据

let arr1:Array; // 表示定义了一个名称叫做arr1的数组, 这个数组中将来只能够存储数值类型的数据

arr1 = [1, 3, 5];

// arr1 = [‘a’, 3, 5]; // 报错

console.log(arr1);

// 方式二

// 需求: 要求定义一个数组, 这个数组中将来只能存储字符串类型的数据

let arr2:string[]; // 表示定义了一个名称叫做arr2的数组, 这个数组中将来只能够存储字符串类型的数据

arr2 = [‘a’, ‘b’, ‘c’];

// arr2 = [1, ‘b’, ‘c’]; // 报错

console.log(arr2);

// 联合类型

let arr3:(number | string)[];// 表示定义了一个名称叫做arr3的数组, 这个数组中将来既可以存储数值类型的数据, 也可以存储字符串类型的数据

arr3 = [1, ‘b’, 2, ‘c’];

// arr3 = [1, ‘b’, 2, ‘c’, false]; // 报错

console.log(arr3);

// 任意类型

let arr4:any[]; // 表示定义了一个名称叫做arr4的数组, 这个数组中将来可以存储任意类型的数据

arr4 = [1, ‘b’, false];

console.log(arr4);

// 元祖类型

// TS中的元祖类型其实就是数组类型的扩展

// 元祖用于保存定长定数据类型的数据

let arr5:[string, number, boolean]; // 表示定义了一个名称叫做arr5的元祖, 这个元祖中将来可以存储3个元素, 第一个元素必须是字符串类型, 第二个元素必须是数字类型, 第三个元素必须是布尔类型

arr5 = [‘a’, 1, true];

// arr5 = [‘a’, 1, true, false]; // 超过指定的长度会报错

arr5 = [‘a’, 1, true];

console.log(arr5);

5. TypeScript 枚举类型
  • 枚举类型是TS为JS扩展的一种类型, 在原生的JS中是没有枚举类型的

/*

枚举用于表示固定的几个取值

例如: 一年只有四季、人的性别只能是男或者女

*/

enum Gender{ // 定义了一个名称叫做Gender的枚举类型, 这个枚举类型的取值有两个, 分别是Male和Femal

Male,

Femal

}

let val:Gender; // 定义了一个名称叫做val的变量, 这个变量中只能保存Male或者Femal

val = Gender.Male;

val = Gender.Femal;

// val = ‘nan’; // 报错

// val = false;// 报错

// 注意点: TS中的枚举底层实现的本质其实就是数值类型, 所以赋值一个数值不会报错

// val = 666; // 不会报错

// console.log(Gender.Male); // 0

// console.log(Gender.Femal);// 1

// 注意点: TS中的枚举类型的取值, 默认是从上至下从0开始递增的

// 虽然默认是从0开始递增的, 但是我们也可以手动的指定枚举的取值的值

// 注意点: 如果手动指定了前面枚举值的取值, 那么后面枚举值的取值会根据前面的值来递增

// console.log(Gender.Male); // 6

// console.log(Gender.Femal);// 7

// 注意点: 如果手动指定了后面枚举值的取值, 那么前面枚举值的取值不会受到影响

// console.log(Gender.Male); // 0

// console.log(Gender.Femal);// 6

// 注意点: 我们还可以同时修改多个枚举值的取值, 如果同时修改了多个, 那么修改的是什么最后就是什么

// console.log(Gender.Male); // 8

// console.log(Gender.Femal);// 6

// 我们可以通过枚举值拿到它对应的数字

console.log(Gender.Male); // 0

// 我们还可以通过它对应的数据拿到它的枚举值

console.log(Gender[0]); // Male

// 探究底层实现原理

/*

var Gender;

(function (Gender) {

// Gender[key] = value;

Gender[Gender[“Male”] = 0] = “Male”;

Gender[Gender[“Femal”] = 1] = “Femal”;

})(Gender || (Gender = {}));

let Gender = {};

Gender[“Male”] = 0;

Gender[0] = “Male”;

Gender[“Femal”] = 1;

Gender[1] = “Femal”;

  • */
6. any-void类型

// any类型

// any表示任意类型, 当我们不清楚某个值的具体类型的时候我们就可以使用any

// 一般用于定义一些通用性比较强的变量, 或者用于保存从其它框架中获取的不确定类型的值

// 在TS中任何数据类型的值都可以负责给any类型

// let value:any; // 定义了一个可以保存任意类型数据的变量

// value = 123;

// value = “abc”;

// value = true;

// value = [1, 3, 5];

// void类型

// void与any正好相反, 表示没有任何类型, 一般用于函数返回值

// 在TS中只有null和undefined可以赋值给void类型

function test():void {

console.log(“hello world”);

}

test();

let value:void; // 定义了一个不可以保存任意类型数据的变量, 只能保存null和undefined

// value = 123; // 报错

// value = “abc”;// 报错

// value = true;// 报错

// 注意点: null和undefined是所有类型的子类型, 所以我们可以将null和undefined赋值给任意类型

// value = null; // 不会报错

value = undefined;// 不会报错

7. Never-object类型

// Never类型

// 表示的是那些永不存在的值的类型

// 一般用于抛出异常或根本不可能有返回值的函数

// function demo():never {

// throw new Error(‘报错了’);

// }

// demo();

// function demo2():never {

// while (true){}

// }

// demo2();

// Object类型

// 表示一个对象

let obj:object; // 定义了一个只能保存对象的变量

// obj = 1;

// obj = “123”;

// obj = true;

obj = {name:‘lnj’, age:13};

console.log(obj);

8. 类型断言
  • 什么是类型断言?

  • TS中的类型断言和其它编程语言的类型转换很像, 可以将一种类型强制转换成另外一种类型

  • 类型断言就是告诉编译器, 你不要帮我们检查了, 相信我,我知道自己在干什么。

最后

❤️ 谢谢支持,喜欢的话别忘了 关注、点赞哦。

let obj:object; // 定义了一个只能保存对象的变量

// obj = 1;

// obj = “123”;

// obj = true;

obj = {name:‘lnj’, age:13};

console.log(obj);

8. 类型断言
  • 什么是类型断言?

  • TS中的类型断言和其它编程语言的类型转换很像, 可以将一种类型强制转换成另外一种类型

  • 类型断言就是告诉编译器, 你不要帮我们检查了, 相信我,我知道自己在干什么。

最后

❤️ 谢谢支持,喜欢的话别忘了 关注、点赞哦。

前端校招面试题精编解析大全

  • 6
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值