速学TypeScript-精简划重点手册-第四册

558 阅读3分钟

小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。

👉关于作者

众所周知,人生是一个漫长的流程,不断克服困难,不断反思前进的过程。在这个过程中会产生很多对于人生的质疑和思考,于是我决定将自己的思考,经验和故事全部分享出来,以此寻找共鸣!!!

专注于Android/Unity和各种游戏开发技巧,以及各种资源分享(网站、工具、素材、源码、游戏等)

欢迎关注公众号【空名先生】获取更多资源和交流!

👉前提

非小白文,作者拥有几年编程经验,开发Android和Unity,因当下想开发小游戏学习CocosCreator需要用的TypeScript,所以需要了解下该语言知识。小空会挑重点,简单的回带过甚至不提。

适合做成手册,没事翻翻。

👉实践过程

😜元组

普通数组存储的都是相同类型的数据,而元素拥有存储不同类型的功能。当然排除基础类型里面的any数组:any[]

    //元组
    let tupleOne = [1, false, "类型可不同"];
    //push 添加元素,队列形式
    tupleOne.push("添加内容");
    tupleOne.push(2);
    //删除最后一个元素
    tupleOne.pop();

元组可以作为函数的参数,如下操作:

  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<T>(myName: T): T {
        return myName;
    }
    //泛型函数调用
    let fanHanShuOne = this.methodFan("不带指定泛型的");
    let fanHanShuTwo = this.methodFan<string>("带指定泛型的");

    //还可以是数组形式的泛型
    methodFanOne<T>(myName: T[]): T[] {
        return myName;
    }
    
    methodFanTwo<T>(myName: Array<T>): Array<T> {
        return myName;
    }

👉其他

📢作者:小空和小芝中的小空

📢转载说明-务必注明来源:芝麻粒儿 的个人主页 - 专栏 - 掘金 (juejin.cn)

📢欢迎点赞👍收藏🌟留言📝