码迷,mamicode.com
首页 > 其他好文 > 详细

TypeScript 素描 - 类

时间:2017-01-05 23:42:17      阅读:244      评论:0      收藏:0      [点我收藏+]

标签:ret   意思   教程   例子   做了   cto   color   order   str   

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

/*
 类 面向对象编程的一大核心
使用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("我必须实现");
    }
}

TypeScript 素描 - 类

标签:ret   意思   教程   例子   做了   cto   color   order   str   

原文地址:http://www.cnblogs.com/LiangSW/p/6254330.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!