速学TypeScript-精简划重点手册-下册(1)

本文介绍了JavaScript中的联合类型,如何声明和使用;命名空间的作用及其与模块化的联系,以及泛型、接口、类和抽象类的使用。作者强调了系统学习编程语言和保持技术更新的重要性,鼓励读者在IT行业中不断成长和合作。
摘要由CSDN通过智能技术生成

let tupleOne = [1, false, “类型可不同”];

this.methodSeven(tupleOne)

methodSeven(tupleCan: (number | boolean | string)[]) {

}

😜联合类型

小空也是第一次了解到联合类型,从Java和C#角度来考虑,着实有点666。那什么是联合的?说白了就是一个变量可以是字符串也可以是数字,用|帮助声明

//联合类型

let unionOne: string | number | boolean;

let unionTwo: string[] | number[];

unionOne = “联合”;

unionOne = 1;

unionOne = false;

this.methodSix(1);

this.methodSix(“类型”);

//联合类型也可以用在函数参数里面

methodSix(myName: string | number | boolean) {

}

😜命名空间

他的核心目的就是为了解决重名(命名冲突)的问题,比如两个人都叫小空,你怎么区分?你可以分开他们一班的小空,二班的小空。二班的班级要想和一班小空交流就需要一班的同意。

所以上面所述班级用namespace来声明,在类的最外层。其他地方想要访问到里面内容,则需要带有export,也就是允许外面调用获取。这点其实是模块的概念,和Java有异曲同工之妙,引用其他类的内容都需要import,不过TypeScript需要将暴露给外面的变量,函数,类等用关键字export声明。

尤其是中大型应用需要多人开发的时候,每人的开发习惯和命名规则都有些许差异,哪怕公司有了规范文档,总有概率可能重名,利用控件可以有效分开模块开发。

image.png

😜泛型

小空作为Android/Unity开发,Java和C#语言中泛型用的挺频繁,她是支持多种类型数据的类型,用起来很灵活,尤其是大型系统或者封装框架的时候。

上面小空刚知道any类型的时候就想到了和泛型很相似,本想着就这么试试,没想到数据存在不对等,并且当使用的多了,什么类型什么变量就很容易混乱,难免出错。还真是上帝为你开一扇门的同时,又为你关闭了一扇窗。

所以还是推荐泛型类型,函数定义以及调用如下:

//泛型函数

methodFan(myName: T): T {

return myName;

}

//泛型函数调用

let fanHanShuOne = this.methodFan(“不带指定泛型的”);

let fanHanShuTwo = this.methodFan(“带指定泛型的”);

//还可以是数组形式的泛型

methodFanOne(myName: T[]): T[] {

return myName;

}

methodFanTwo(myName: Array): Array {

return myName;

}

不是如图这样的接口哦

image.png

她是抽象方法的一个方案,将一些特征内容抽取出来,然后再让具体的类去实现,好比小时候父母挣钱,孩子花钱。

  1. 接口和接口的继承是extends,变量继承用英文符号:

  2. 变量继承建议先给初始值

interface ScriptInterfaceOne {

myNameOne: string;

myNumberStrOne: string[];

//联合类型

unionOne: string | number | boolean;

}

interface ScriptInterfaceTwo {

myNameTwo: string;

myNumberStrTwo: string[];

//联合类型

unionTwo: string | number | boolean;

}

interface ScriptInterfaceThree extends ScriptInterfaceOne, ScriptInterfaceTwo {

myNameThree: string;

myNumberStrThree: string[];

//联合类型

unionThree: string | number | boolean;

}

//接口继承-记得给初始值

let interOne: ScriptInterfaceOne = {myNameOne: “名字”, unionOne: “联合”, myNumberStrOne: [“1”, “2”]};

interOne.myNameOne = “”;

interOne.unionOne = “接口的联合”;

//接口是可以继承多个的 接口与接口的继承用关键字extends 变量继承用英文符号 :

let interThree: ScriptInterfaceThree = {

myNameOne: “名字”, unionOne: “联合”, myNumberStrOne: [“1”, “2”],

myNameTwo: “名字”, unionTwo: “联合”, myNumberStrTwo: [“1”, “2”],

myNameThree: “名字”, unionThree: “联合”, myNumberStrThree: [“1”, “2”]

};

😜类

l 类是和接口有区别,只能单个继承,即类A只能继承类B或类C,不能类B和类A同时继承,但是可以套娃继承 类B继承类C,类A再继承类B,这样类A也有C的属性。

l 类的构造函数只有一个,否则出错。

l 子类可访问父类里面的属性和重写父类方法。

l 类可以实现接口,用implenments,类的继承用extends。

l 类默认是public公有可见的,而Java和C#默认是非公有的。

l 抽象类和Java一致,关键词abstract和extends,且派生类必须实现抽象类内的方法

instanceof 运算符用于判断对象是否是指定的类型,如果是返回 true,否则返回 false。

//instanceof关键字判断变量是否是对应的类型

let isType = lei instanceof ScriptLei;

//正常的普通的类

class ScriptLei implements ScriptInterfaceTwo {

private _myName: string | null = null;

private _myAge: number | null = null;

set myName(value: string | null) {

this._myName = value;

}

总结

最后小编想说:不论以后选择什么方向发展,目前重要的是把Android方面的技术学好,毕竟其实对于程序员来说,要学习的知识内容、技术有太多太多,要想不被环境淘汰就只有不断提升自己,从来都是我们去适应环境,而不是环境来适应我们!

这里附上我整理的几十套腾讯、字节跳动,京东,小米,头条、阿里、美团等公司19年的Android面试题。把技术点整理成了视频和PDF(实际上比预期多花了不少精力),包含知识脉络 + 诸多细节。

由于篇幅有限,这里以图片的形式给大家展示一小部分。

网上学习 Android的资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。希望这份系统化的技术体系对大家有一个方向参考。

技术进阶之路很漫长,一起共勉吧~

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化学习资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

那么很难做到真正的技术提升。希望这份系统化的技术体系对大家有一个方向参考。

技术进阶之路很漫长,一起共勉吧~

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化学习资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

vue-typescript-import-dts 是一个用于为 Vue.js 项目中的 TypeScript 文件生成类型声明文件的工具。在 Vue.js 项目中使用 TypeScript 进行开发时,我们经常需要为一些第三方库或自定义组件编写类型声明文件,以提供更好的代码提示和类型检查。 使用 vue-typescript-import-dts 工具可以自动分析 TypeScript 文件中的导入语句,并根据导入的模块生成对应的类型声明文件。这样,在使用该模块时,IDE 或编辑器就能提供准确的代码补全和类型检查。 例如,假设我们的项目中使用了一个名为 axios 的第三方库进行网络请求,但是该库并没有提供类型声明文件。我们可以通过 vue-typescript-import-dts 工具,在我们的 TypeScript 文件中导入 axios,并正确配置工具,它将自动为我们生成一个 axios.d.ts 类型声明文件。 具体使用 vue-typescript-import-dts 的步骤如下: 1. 在项目中安装 vue-typescript-import-dts,可以使用 npm 或 yarn 命令来安装。 2. 在 TypeScript 文件中,使用 import 语句导入需要生成类型声明文件的模块。 3. 在项目根目录下创建一个 .vue-typescript-import-dts.json 配置文件,用来配置生成类型声明文件的规则。可以指定生成的声明文件的输出路径、文件名等。 4. 运行 vue-typescript-import-dts 命令,它会自动扫描 TypeScript 文件中的导入语句,并根据配置生成相应的类型声明文件。 这样,在我们编写代码时,IDE 或编辑器就可以准确地为我们提供代码补全和类型检查的功能。这对于提高开发效率和代码质量非常有帮助。 总之,vue-typescript-import-dts 是一个便捷的工具,可以自动为 Vue.js 项目中使用的第三方库或自定义组件生成类型声明文件,提供更好的代码提示和类型检查功能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值