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

初学者玩转 TypeScript系列,总计 5 期,本文为第 1 期,点赞、收藏、评论、关注、三连支持!

一期目录

        • 1.什么是 TypeScript (TS)?
  • 2.为什么需要 TypeScript?

  • 3.TypeScript特点

  • 4. TypeScript 基础类型

  • 4. TypeScript 数组与元祖

  • 5. TypeScript 枚举类型

  • 6. any-void类型

  • 7. Never-object类型

  • 8. 类型断言

对于初学者来说,学习编程最害怕的就是,

那么,Typescript 是不是很难?

首先,我可以肯定地告诉你,你的焦虑是多余的。新手对学习新技术有很强的排斥心理,主要是因为基础不够扎实,然后自信心不够强。

我个人一直强调的是基础不牢,地动山摇,基础牢固,什么都是切菜。其实学习 TS 成本很低,只要你会 JS,学习 TS 就和切菜没什么区别。你要知道 TS 代码与 JS 代码有非常高的兼容性,无门槛,你把 JS 代码改为 TS 就可以运行,所以说不用担心 。

对于学习 TS 的困扰,我想这部分学生主要是因为没有接触过强类型的编程语言,导致他们认为学习TS需要定义各种类型,还有一些新概念等等,会增加学习成本。其实如果你了解过强类型语言,那么上手 TS 并不困难,即便没接触过强类型语言,学习起来其实也有一些技巧和规律可循。

1.什么是 TypeScript (TS)?
  • TypeScript 简称 TS

  • TS 和 JS 之间的关系其实就是 Less/Sass 和 CSS 之间的关系

  • 就像 Less/Sass 是对 CSS 进行扩展一样, TS 也是对 JS 进行扩展

  • 就像 Less/Sass 最终会转换成 CSS 一样, 我们编写好的 TS 代码最终也会换成 JS

2.为什么需要 TypeScript?
  • 因为 JavaScript 是弱类型, 很多错误只有在运行时才会被发现

  • 而 TypeScript 是强类型, 它提供了一套静态检测机制, 可以帮助我们在编译时就发现错误

… …

3.TypeScript特点
  • 支持最新的 JavaScript 新特特性

  • 支持代码静态检查

  • 支持诸如 C,C++,Java,Go 等后端语言中的特性

(枚举、泛型、类型转换、命名空间、声明文件、类、接口等)

4. TypeScript 基础类型
  • TypeScript 支持与 JavaScript 几乎相同的数据类型,此外还提供了实用的枚举类型方便我们使用。

// 数值类型 number

let val1:number; // 定义了一个名称叫做val1的变量, 这个变量中将来只能存储数值类型的数据

val1 = 123;

// val1 = “123”; // 会报错

// 注意点: 其它的用法和JS一样

// val1 = 0x11;

// val1 = 0o11;

// val1 = 0b11;

console.log(val1);

// 布尔类型 boolean

let val2:boolean;

val2 = true;

// val2 = 1; // 会报错

console.log(val2);

// 字符串类型 string

let val3:string;

val3 = “123”;

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类型

最后

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数初中级Android工程师,想要提升技能,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助。

因此收集整理了一份《2024年Web前端开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点!不论你是刚入门Android开发的新手,还是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门!

如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
1792363)]

[外链图片转存中…(img-beLWCbls-1715851792363)]

[外链图片转存中…(img-zV0A5pn0-1715851792363)]

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点!不论你是刚入门Android开发的新手,还是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门!

如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

  • 4
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值