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

/*
类 面向对象编程的一大核心
使用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 素描 - 类的更多相关文章

  1. TypeScript 素描-基础类型

    博文读自 TypeScript 官方文档而来,不具有学习性,仅是本人学习时记录以供日后翻阅 ,有学习TypeScript的朋友还请去看更为详细的官方文档 TypeScript官网文档中的基础类型, T ...

  2. TypeScript入门四:TypeScript的类(class)

    TypeScript类的基本使用(修饰符) TypeScript类的抽象类(abstract) TypeScript类的高级技巧 一.TypeScript类的基本使用(修饰符) TypeScript的 ...

  3. TypeScript 素描 - 接口

    /* 接口 C#写多了,接口也自然也是理解的.不过TypeScript中的接口与 C#中的还是有些区别的 接口的作用就是为这些类型命名和为你的代码或第三方代码定义契约 */ //为方法的参数做契约 i ...

  4. TypeScript 素描 - 泛型、枚举

    /* 泛型,好处多多的功能.不过这里最基本的就不打算说了,仅准备说一些 和C#不同的地方 */ /* 泛型接口 GenericIdentityFn 定义了方法的描述等 identity方法则是它的实现 ...

  5. TypeScript Class(类)

    传统的JavaScript注重用函数和基于原型的继承来创建可复用的组件,但这可能让用习惯面对对象方式的程序员感到棘手,因为他们的继承和创建对象都是由类而来的.从JavaScript的下一个版本,ECM ...

  6. TypeScript 素描 - 模块

    /* 其实前面一些都是废话,因为都和C#类似.从模块开始就需要深入的去理解了 文档反复声明了 内部模块现在称做 命令空间 外部模块称为 模块 模块在其自身的作用域里执行,而不是在全局作用域里,也就是说 ...

  7. TypeScript 素描 - 模块解析、声明合并

    模块解析 模块解析有两种方式 相对方式  也就是以/或 ./或-/开头的,比如import jq  from "/jq" 非相对方式  比如 import model  from ...

  8. TypeScript 素描 - 模块、命名空间

    /* 其实前面一些都是废话,因为都和C#类似.从模块开始就需要深入的去理解了 文档反复声明了 内部模块现在称做 命令空间 外部模块称为 模块 模块在其自身的作用域里执行,而不是在全局作用域里,也就是说 ...

  9. TypeScript入门-类

    ▓▓▓▓▓▓ 大致介绍 在ECMASript6中引入了类这一概念,通过class声明一个类.对于学习过C和C++的人应该不会陌生 ▓▓▓▓▓▓ 类 看一个简单的类: class Greeter { g ...

随机推荐

  1. JS处理事件小技巧

    今天,就分享一下我自己总结的一些JS的小技巧: ①防止鼠标选中事件 <div class="mask" onselectstart="return false&qu ...

  2. 读书笔记--SQL必知必会19--存储过程

    不同的DBMS对存储过程的实现不同,差异巨大,这里不涉及具体的DBMS,仅仅说明存储过程的简单含义. 19.1 存储过程 简单来说,存储过程就是为以后使用而保存的一条或多条SQL语句. 可以将存储过程 ...

  3. 抽象类 VS 接口

    引言 接口和抽象类是面向对象编程(OOP, Object Oriented programming)中两个绕不开的概念,二者相似而又有所不同.接下来,我们来了解二者的概念并比较它们的异同. 什么是抽象 ...

  4. Node学习笔记(四):gulp+express+io.socket部署angularJs2(填坑篇)

    这篇就先暂停下上篇博客--你画我猜的进度,因为在做这个游戏的时候,想采用最新的ng2技术,奈何坑是一片又一片,这边就先介绍下环境部署和填坑史 既然要用ng2,首先要拿到资源,我这边用的是angular ...

  5. 设计模式(十二)享元模式(Flyweight Pattern)

    一.引言 在软件开发过程,如果我们需要重复使用某个对象的时候,如果我们重复地使用new创建这个对象的话,这样我们在内存就需要多次地去申请内存空间了,这样可能会出现内存使用越来越多的情况,这样的问题是非 ...

  6. Entity Framework 数据库初始化的三种方法

    在数据库初始化产生时进行控制,有三个方法可以控制数据库初始化时的行为.分别为CreateDatabaseIfNotExists.DropCreateDatabaseIfModelChanges.Dro ...

  7. js实现toggleClass

  8. Oracle研究专题:Oracle系统安装与配置

    最近开始研究Oracle数据库,盖因公司的系统要么Oracle要么是mysql吧. 作为一个IT工作者,没有碰过Oracle是一件很匪夷所思得事情. 想到过去几年,乃至接触IT行业开始就只有玩过sql ...

  9. npm更新到最新版本的方法

    打开命令行工具 npm -v 查看是否是最新版本 如果不是 运行npm i npm g 升级 打开C:\Users\用户名用户目录找到node_modules 文件夹下的npm文件夹,复制一份 打开n ...

  10. An App ID with Identifier 'com.XXX.XXX’ is not available. Please enter a different string.报错

    昨天刚刚升的Xcode7.3和iOS9.3,然后没怎么使用这两样就下班了,但是今天早上来了之后,就发现突然之间不能真机测试和运行代码了,一看才发现xcode报错: An App ID with Ide ...