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

874 阅读3分钟

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

👉关于作者

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

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

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

👉前提

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

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

👉实践过程

😜接口

不是如图这样的接口哦

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;
    }

    set myAge(value: number | null) {
        this._myAge = value;
    }

    get myName(): string | null {
        return this._myName;
    }

    get myAge(): number | null {
        return this._myAge;
    }

    constructor() {

    }
 
    private _myNameTwo: string | null = null;
    private _myNumberStrTwo: string[] | null = null;
    private _unionTwo: string | number | boolean | null = null;

    get myNameTwo(): string | null {
        return this._myNameTwo;
    }

    set myNameTwo(value: string | null) {
        this._myNameTwo = value;
    }

    get myNumberStrTwo(): string[] | null {
        return this._myNumberStrTwo;
    }

    set myNumberStrTwo(value: string[] | null) {
        this._myNumberStrTwo = value;
    }

    get unionTwo(): string | number | boolean | null {
        return this._unionTwo;
    }

    set unionTwo(value: string | number | boolean | null) {
        this._unionTwo = value;
    }
}

     //调用类
        let lei = new ScriptLei();
        lei.myName = "我的名字";
        lei.myAge = 18;

👉其他

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

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

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