• TypeScript 素描


    本文虽然是学自官方教程而来,但是也融入了自己的理解,而且对官方的例子做了一些修改

    /*
     类 面向对象编程的一大核心
    使用C#、Java进行编程的朋友肯定已经是不能够再熟悉了
    TypeScript的类与C#的类有着很高的相似度,但也有着些许不同
    */
    
    
    //构造函数不同,与类同名不再是构造函数而是方法
    //构造函数则是constructor
    class Animal {
        //构造函数
        constructor(public name: string) {
            this.name = name
    
        }
        //方法
        Animal() {
            console.log(`say hi ${this.name}`);
        }
    }
    let a1 = new Animal("小明");
    a1.Animal();
    
    //继承与C#中没有什么区别  使用extends关键字
    //有则必须Super父类的构造函数
    class Log extends Animal {
        constructor(public name: string, public age: number) {
            super(name);
            this.age = age;
        }
    }
    let l1 = new Log("旺财", 10);
    //因为 log父类是Animal ,所以天生log就有Name字段与Animal方法
    l1.Animal()
    
    //修饰符 与C#类似一共有 private public protected readonly
    //无需多言相信大家都懂得这是什么意思 
    //有趣的是  TypeScript使用的是兼容性类型系统 ,当我们比较两种
    //不同类型的时候,并不在乎它们从何而来,如果所有的成员类型都是
    //兼容的,那它们就是相同的
    
    /*
    还有一个有趣的是,在上面的代码中我并没有写Name字段和Age字段,
    构造函数中的参数加了修饰符 public 。这就是TypeScrpt中的参数属
    性。name参数同样也是属性
    */
    
    
    /* 
    存取器  也就是Get;Set;  C#也叫做属性,用来控制字段的访问与设置
    下面这个代码相信大家都可以看的懂是做什么
    */
    
    class Employee {
        private _fullName: string;
    
        get fullName(): string {
            return this._fullName;
        }
        set fullName(name: string) {
            if (name == "xxxxx") {
                console.log("你这样做是不对的");
            } else {
                this._fullName = name;
            }
        }
    }
    let em = new Employee();
    em.fullName;
    
    /*
    静态成员,嗯这也很容易理解的,它存在于类上而不是类的实例
    */
    class Grid {
        static origin: string = "staticvalue";
    }
    Grid.origin;
    
    /*
    抽象类与抽象方法 abstract关键字 用过C#的朋友也一样知道这是什么,如果不
    知道……就去面壁吧
    */
    abstract class Animal2 {
        abstract makeSound(): void;
    }
    
    class Log2 extends Animal2 {
        makeSound(): void {
            console.log("我必须实现");
        }
    }
  • 相关阅读:
    poj2528 Mayor's posters(线段树,离散化)
    管理线程之等待线程结束
    linux下使用DBCA(database configuration assistant)创建oracle数据库
    POJ 1765 November Rain
    PC端 java 开发蓝牙所遇到的问题
    CentOS 安装SVNclient
    unity3d 延迟运行脚本语句
    Q13.cocoapod_卡在“analyzing_depengcies”问题解决
    深度学习与计算机视觉系列(10)_细说卷积神经网络
    【COGS1672】【SPOJ375】QTREE
  • 原文地址:https://www.cnblogs.com/LiangSW/p/6254330.html
Copyright © 2020-2023  润新知