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软件由许多对象构成,形成一个对象网络,对象之间通过发 ...
随机推荐
- C#实现函数根据返回类型重载
一直以来都很奇怪为何C#不能直接支持函数返回值重载, 比如如下两个函数是编译不过的 Public Class DbHelper { Public Static int ExecuteScalar(); ...
- .net图片压缩
1.png很难进行压缩,一般压缩时间较长. 2.jpg图片压缩方法: #region 图片压缩[之压缩jpg] public static void JpgImgZip(Image img,strin ...
- Scala + Play + Sbt + Protractor
Scala + Play + Sbt + Protractor = One Build 欢迎关注我的新博客地址:http://cuipengfei.me/ 我所在的项目的技术栈选用的是Play fra ...
- 大规模web服务开发技术
大规模web服务开发技术 总评 这本书是日本一个叫hatena的大型网站的CTO写的,通过hatena网站从小到大的演进来反应一个web系统从小到大过程中的各种系统和技术架构变迁,比较接 ...
- .net开发框架设计
转WisDom .net开发框架设计 WisDom .net 框架设计 1. 为啥要弄 2014 年我已经是我们参加工作的第六年,也做过不少项目,但是发现自己没有代码积累.这里利用业余时间梳理一下 ...
- Dynamics CRM 2013 体验
CRM 2013终于可以下载了,赶紧下载安装. 在CRM 2011 的基础上,CRM 2013 在UI上有了很大的变化.从CRM 2011 RollUp 12开始,微软就放弃了按钮的立体效果,逐渐趋向 ...
- 【C++ 中文手册】即将完成
[C++ 中文手册]即将完成 内容包含C++11,历时一年,日夜赶工,即将完成! 该参考手册主要由以下四部份内容组成: C++ 语言 C++ 继承了 C 语言 的大部分语法,并在其基础上修改或增加部分 ...
- Google Adsense(Google网站联盟)广告申请指南
Google AdSense 是一种获取收入的快速简便的方法,适合于各种规模的网站发布商.它可以在网站的内容网页上展示相关性较高的 Google 广告,并且这些广告不会过分夸张醒目.由于所展示的广告同 ...
- 如何在大型的并且有表分区的数据库中进行DBCC CHECKDB操作
如何在大型的并且有表分区的数据库中进行DBCC CHECKDB操作 其实这个问题已经在<SQLSERVER企业级平台管理实践>里徐老师已经讲过了,不过我想用自己的语言再讲详细一些 笔记链接 ...
- 更好的抽屉效果(ios)
昨天项目基本没啥事了,晚上早早的就回家了,躺在床上无聊地玩着手机(Android的),在清理系统垃圾时被一个“360手机助手”给吸引了, 其实我是被它的那个抽屉效果给吸引了,此时你也许会觉得我out了 ...