TypeScript -- 面向对象特性
面向对象特性 一、类(class)--TypeScript的核心,使用TypeScript开发时,在部分代码都是写在类里面的。
、class关键字和类名就可以定义一个类
、 类的访问控制符--有三个,public,private,protected
class Person {
public name;//public(公有的)访问控制符,其为默认的
private eat() {//private为私有的访问打控制符
console.log('im eating');
}
protected age;//protected为受保护的
}
var p1 = new Person() //类的实例化
p1.name = "banane";
p1.eat();
、类的构造函数
class Person {
constructor(name:string){//这个方法不能在外部调用;只有在实例化时被调用,且只调用一次
this.name = name
}//简写constructor(public name:string){ }(必须写访问控制符)
name;
eat() {
console.log(this.name);
}
}
、类的继承--extends,super
class Employee extends Person {//继承父类所有的属性和方法
constructor(name:string,code:string){//子类的构造函数必须调用父类的构造函数
super(name);//super第一个用法--用来调用父类的构造函数
this.code = code;
}
code :string;
work() {
super.eat();//super第二种方法--用来调用父类其它方法,用super.来调的”
this.doWork();
}
doWork(){
console.log('lai')
}
}
var e1 = new Employee('name');//继承Person的属性
var e1.eat()//继承Person的方法 二、泛型(generic)--参数化的类型,一般用来限制集合的内容
、var workers:Array<Person> = [];
workers[] = new Person("zhangsan");//Person是Person里面的
workers[] = new Employee("zhangsi",'2');//Employee也是Person里面的
workers[] = ;//2不是Person里面的
三、接口(Interface)--用来建立某种代码约定,使得其它开发者在调用某个方法或创建新的类时必须遵循接口所定义的代码约定
、声明参数
interface Person {
name: string;
age: number;
}
class Person {
constructor(public config:Person){ }//接口(第一个使用方式)用作一个方法的参数的类型声明时,当在调用这个方法时,会查传入的参数是否满足接口所声明的所有属性
} var p1 = new Person ({
name: "zhangsan";
age:18
})
、用接口声明方法
interface Animal {
eat()
}
class Sheep implements Animal {//关键字implements表示声明一个类实现Animal这个接口,必须要实现接口的方法
eat() {
console.log('i eat grass')
}
}
四、模块(Module)-- 模块可以帮助开发者将代码分割为可重用的单元。开发者可以自己决定将模块中的哪些资源(类、方法、变量)
暴露出去供外部使用,哪些资源只在模块内使用。
、理解模块--一个文件就是一个模块,就是这么个意思 ,不用想的多么高大尚
文件1名为:a.ts,内容如下
export var prop1;
var prop2;
export function func1(){ }
function func2(){ }
export class Cla1 { }
class Cla2 { }
文件2名为:b.ts,内容如下
console.log(prop1)
func1();
new Cla1();//上面这些都可以拿到,因为在文件a.ts中用export暴露出来了可以拿到,而其它这个文件拿不到
//当然你也可以暴露b.ts文件里的东西,在a.ts文件中就可以做得到了,都可以暴露 五、注解(annotation)-- 注解为程序的元素(类、方法、变量)加上更直观更明了的说明,这些说明信息与程序 的业务逻辑无关
而是供指定的工具或框架使用的。 、类的举例
import {Component} from '@angular/core';
@Component({
selecto:'app-root',
templateUrl:'./app.componemt.html',
styleUrls:['./app.component.css']
})//@Component这里面就是注解
export class AppComponent {
title = 'app works!';
}//告诉框架(angulars)怎么如何来处理标准的tpyeScript写出来的一个类如何放在这个框架中使用 六、类型定义文件(*.d.ts)-- 类型定义文件用来开发者在TpyeScript中使用已有的javaScript的工具包 如:jQuery
、有一个工具叫Typings,这个是专门用来将一个框架变成定义文件用
面向对象特性
一、类(class)--TypeScript的核心,使用TypeScript开发时,在部分代码都是写在类里面的。 1、class关键字和类名就可以定义一个类 、 类的访问控制符--有三个,public,private,protected class Person { public name;//public(公有的)访问控制符,其为默认的 private eat() {//private为私有的访问打控制符 console.log('im eating'); } protected age;//protected为受保护的 } var p1 = new Person() //类的实例化 p1.name = "banane"; p1.eat(); 、类的构造函数 class Person { constructor(name:string){//这个方法不能在外部调用;只有在实例化时被调用,且只调用一次 this.name = name }//简写constructor(public name:string){ }(必须写访问控制符) name; eat() { console.log(this.name); } } 、类的继承--extends,super class Employee extends Person {//继承父类所有的属性和方法 constructor(name:string,code:string){//子类的构造函数必须调用父类的构造函数 super(name);//super第一个用法--用来调用父类的构造函数 this.code = code; } code :string; work() { super.eat();//super第二种方法--用来调用父类其它方法,用super.来调的” this.doWork(); } doWork(){ console.log('lai') } } var e1 = new Employee('name');//继承Person的属性 var e1.eat()//继承Person的方法
二、泛型(generic)--参数化的类型,一般用来限制集合的内容 1、var workers:Array<Person> = []; workers[0] = new Person("zhangsan");//Person是Person里面的 workers[1] = new Employee("zhangsi",'2');//Employee也是Person里面的 workers[2] = 2;//2不是Person里面的三、接口(Interface)--用来建立某种代码约定,使得其它开发者在调用某个方法或创建新的类时必须遵循接口所定义的代码约定 1、声明参数 interface Person { name: string; age: number; } class Person { constructor(public config:Person){
}//接口(第一个使用方式)用作一个方法的参数的类型声明时,当在调用这个方法时,会查传入的参数是否满足接口所声明的所有属性 }
var p1 = new Person ({ name: "zhangsan"; age:18 }) 2、用接口声明方法 interface Animal { eat() } class Sheep implements Animal {//关键字implements表示声明一个类实现Animal这个接口,必须要实现接口的方法 eat() { console.log('i eat grass') } }四、模块(Module)-- 模块可以帮助开发者将代码分割为可重用的单元。开发者可以自己决定将模块中的哪些资源(类、方法、变量) 暴露出去供外部使用,哪些资源只在模块内使用。 1、理解模块--一个文件就是一个模块,就是这么个意思 ,不用想的多么高大尚 文件1名为:a.ts,内容如下 export var prop1; var prop2; export function func1(){
} function func2(){
} export class Cla1 {
} class Cla2 {
} 文件2名为:b.ts,内容如下 console.log(prop1) func1(); new Cla1();//上面这些都可以拿到,因为在文件a.ts中用export暴露出来了可以拿到,而其它这个文件拿不到 //当然你也可以暴露b.ts文件里的东西,在a.ts文件中就可以做得到了,都可以暴露
五、注解(annotation)-- 注解为程序的元素(类、方法、变量)加上更直观更明了的说明,这些说明信息与程序 的业务逻辑无关 而是供指定的工具或框架使用的。
1、类的举例 import {Component} from '@angular/core'; @Component({ selecto:'app-root', templateUrl:'./app.componemt.html', styleUrls:['./app.component.css'] })//@Component这里面就是注解 export class AppComponent { title = 'app works!'; }//告诉框架(angulars)怎么如何来处理标准的tpyeScript写出来的一个类如何放在这个框架中使用
六、类型定义文件(*.d.ts)-- 类型定义文件用来开发者在TpyeScript中使用已有的javaScript的工具包 如:jQuery 1、有一个工具叫Typings,这个是专门用来将一个框架变成定义文件用
TypeScript -- 面向对象特性的更多相关文章
- Java语言中的面向对象特性总结
Java语言中的面向对象特性 (总结得不错) [课前思考] 1. 什么是对象?什么是类?什么是包?什么是接口?什么是内部类? 2. 面向对象编程的特性有哪三个?它们各自又有哪些特性? 3. 你知 ...
- Javascript面向对象特性实现封装、继承、接口详细案例——进级高手篇
Javascript面向对象特性实现(封装.继承.接口) Javascript作为弱类型语言,和Java.php等服务端脚本语言相比,拥有极强的灵活性.对于小型的web需求,在编写javascript ...
- 浅谈Objective—C中的面向对象特性
Objective-C世界中的面向对象程序设计 面向对象称程序设计可能是现在最常用的程序设计模式.如何开发实际的程序是存在两个派系的-- 面向对象语言--在过去的几十年中,很多的面向对象语言被发明出来 ...
- javascript进阶——面向对象特性
面向对象的javascript是这门语言被设计出来时就考虑的问题,熟悉OOP编程的概念后,学习不同的语言都会发现不同语言的实现是不同的,javascript的面向对象特性与其他具有面向对象特性的语言的 ...
- C++对C语言的非面向对象特性扩充(3)
今天要讲的是C++作用域运算符"::",强制类型转换的扩充,C++中相对于C中malloc和free函数的运算符new和delete,以及C++对C的一个重要扩充:引用(refer ...
- .NET面向对象特性之封装
.NET面向对象特性之封装 面向对象的基本内容由:类.对象.属性.方法.字段构成. 面向对象的三大特性:继承.多态.封装. 关于面向对象的特性很多人都把目光转向了继承.多态和接口,却很少有人提及过封装 ...
- .NET面向对象特性之多态
.NET面向对象特性之多态 前言 上一篇总结了面向对象三大特性之一的继承,再接再厉,这一章继续总结多态.同时把继承中涉及到多态的内容进一步补充扩展.可以说“继承”是多态的根基.但继承主要关注的是“共通 ...
- .NET面向对象特性之“继承”
整体简介 1.理解继承——继承关系图 2.实现继承与接口多继承 3.new. virtual.override方法 4.抽象方法和抽象类的继承 5.继承的本质 6.继承的复用性.扩展性和安全性 7.多 ...
- Objective-C的面向对象特性(一)
Objective-C在c语言的基础上增加了面向对象特性,都有哪些面向对象特性呢? 其中第一个最重要的特性是类和对象的实现. Objective-C软件由许多对象构成,形成一个对象网络,对象之间通过发 ...
随机推荐
- NUint使用详解及Visual Studio配置
NUint使用详解及Visual Studio配置 阅读目录 什么是单元测试? 为什么使用单元测试? NUint使用详解: 示例 属性 断言 简单测试 VS配置: External Tools Vis ...
- Ubuntu下LaTex中文环境安装与配置
转载自:http://www.linuxidc.com/Linux/2012-06/62456.htm LaTeX是一个强大的排版软件,但是其最初只是为英文排版而设计的.为了使其能够胜任中文排版的重任 ...
- Docker 01 Introduction
Docker的组成: Docker Engine,一个轻量级.强大的开源容器虚拟化平台,使用包含了工作流的虚拟化技术,帮助用户建立.并容器化一个应用. Docker Hub,提供的一个SaaS服务,用 ...
- 后台XML处理
public void GetInfo() { string message = @"<?xml version='1.0' encoding='utf-8' ...
- 只有五行的Floyd最短路算法
暑假,小哼准备去一些城市旅游.有些城市之间有公路,有些城市之间则没有,如下图.为了节省经费以及方便计划旅程,小哼希望在出发之前知道任意两个城市之前的最短路程. 上图中有 ...
- 线程:Semaphore实现信号灯
Semaphore是一个计数的信号量,可以维护当前访问自身的线程个数,并提供了同步机制.使用Semaphore可以控制同时访问资源的线程个数,例如实现一个文件允许的线程访问数.打个通俗的比喻,Sema ...
- ETHREAD APC
ETHREAD APC <寒江独钓>内核学习笔记(4) 继续学习windows 中和线程有关系的数据结构: ETHREAD.KTHREAD.TEB 1. 相关阅读材料 <window ...
- cocos2d(背景图片循环滚动)
背景图片循环滚动 使用action 实现的: 主要有两个背景图片交替循环滚动:我选的两个背景图片的宽度都是1024的 ,所以定义了#define BGIMG_WIDTH 1024 代码如下: 在Hel ...
- Myeclipse 10 for mac 破解版下载安装及破解方法
下载地址:http://pan.baidu.com/share/link?shareid=463687&uk=1798617416 解压下载好的压缩包Myeclipse 10 for mac+ ...
- Clob类型转换成String类型
oracle中表结构如下: create table GRID_RESOURCE ( ID VARCHAR2(50), CNNAME VARCHAR2(50), TYPE VARCHAR2(50), ...