【联合类型】

联合类型(Union Types)可以通过管道(|)将变量设置多种类型,赋值时可以根据设置的类型来赋值。

注意:只能赋值指定的类型,如果赋值其它类型就会报错。

var val:string|number
val = 12
console.log("数字为 "+ val)
val = "Runoob"
console.log("字符串为 " + val)

可以将联合类型作为函数参数使用:

function disp(name:string|string[]) {
if(typeof name == "string") {
console.log(name)
} else {
var i;
for(i = 0;i<name.length;i++) {
console.log(name[i])
}
}
}
disp("Runoob")
console.log("输出数组....")
disp(["Runoob","Google","Taobao","Facebook"])

可以将数组声明为联合类型:

var arr:number[]|string[];
var i:number;
arr = [1,2,4]
console.log("**数字数组**") for(i = 0;i<arr.length;i++) {
console.log(arr[i])
} arr = ["Runoob","Google","Taobao"]
console.log("**字符串数组**") for(i = 0;i<arr.length;i++) {
console.log(arr[i])
}

【TypeScript接口】

interface interface_name {
}

接口的方法即抽象方法,只有声明而没有具体实现:

但是属性还是一样的只有声明

接口被描述成一种类型,这里是由我们的变量对接口进行实现

interface IPerson {
firstName:string,
lastName:string,
sayHi: ()=>string
} var customer:IPerson = {
firstName:"Tom",
lastName:"Hanks",
sayHi: ():string =>{return "Hi there"}
} console.log("Customer 对象 ")
console.log(customer.firstName)
console.log(customer.lastName)
console.log(customer.sayHi()) var employee:IPerson = {
firstName:"Jim",
lastName:"Blakes",
sayHi: ():string =>{return "Hello!!!"}
} console.log("Employee 对象 ")
console.log(employee.firstName)
console.log(employee.lastName)

【联合类型和接口】

interface RunOptions {
program:string;
commandline:string[]|string|(()=>string);
} // commandline 是字符串
var options:RunOptions = {program:"test1",commandline:"Hello"};
console.log(options.commandline) // commandline 是字符串数组
options = {program:"test1",commandline:["Hello","World"]};
console.log(options.commandline[0]);
console.log(options.commandline[1]); // commandline 是一个函数表达式
options = {program:"test1",commandline:()=>{return "**Hello World**";}}; var fn:any = options.commandline;
console.log(fn());

【接口和数组】

interface namelist {
[index:number]:string
} var list2:namelist = ["John",1,"Bran"] / 错误元素 1 不是 string 类型
interface ages {
[index:string]:number
} var agelist:ages;
agelist["John"] = 15 // 正确
agelist[2] = "nine" // 错误

【接口多继承】

TypeScript和我们的Java接口一样允许多继承:

interface IParent1 {
v1:number
} interface IParent2 {
v2:number
} interface Child extends IParent1, IParent2 { }
var Iobj:Child = { v1:12, v2:23}
console.log("value 1: "+Iobj.v1+" value 2: "+Iobj.v2)

【TypeScript 类】

class Car {
// 字段
engine:string; // 构造函数
constructor(engine:string) {
this.engine = engine
} // 方法
disp():void {
console.log("发动机为 : "+this.engine)
}
}

创建实例:

var obj = new Car("Engine 1")

同Java一样,TypeScript不支持类的多继承,也是一样的多重继承:

class Root {
str:string;
} class Child extends Root {}
class Leaf extends Child {} // 多重继承,继承了 Child 和 Root 类 var obj = new Leaf();
obj.str ="hello"
console.log(obj.str)

方法的重写:

class PrinterClass {
doPrint():void {
console.log("父类的 doPrint() 方法。")
}
} class StringPrinter extends PrinterClass {
doPrint():void {
super.doPrint() // 调用父类的函数
console.log("子类的 doPrint()方法。")
}
}

Static静态,类的变量

class StaticMem {
static num:number; static disp():void {
console.log("num 值为 "+ StaticMem.num)
}
} StaticMem.num = 12 // 初始化静态变量
StaticMem.disp() // 调用静态方法

instanceof 运算

var Person = /** @class */ (function () {
function Person() {
}
return Person;
}());
var obj = new Person();
var isPerson = obj instanceof Person;
console.log(" obj 对象是 Person 类实例化来的吗? " + isPerson);

就连访问修饰符也是一样。。。

private
protected
public
  • public(默认) : 公有,可以在任何地方被访问。

  • protected : 受保护,可以被其自身以及其子类和父类访问。

  • private : 私有,只能被其定义所在的类访问。

类实现接口也是一样使用implements:

interface ILoan {
interest:number
} class AgriLoan implements ILoan {
interest:number
rebate:number constructor(interest:number,rebate:number) {
this.interest = interest
this.rebate = rebate
}
} var obj = new AgriLoan(10,1)
console.log("利润为 : "+obj.interest+",抽成为 : "+obj.rebate )

【TypeScript】02 面向对象的更多相关文章

  1. day22 02 面向对象的交互

    day22 02 面向对象的交互 一.三种编程方式 1.面向过程编程:核心是过程,流水线式思维 优点:极大降低了写程序的复杂程度,只需要顺着要执行的步骤,堆叠代码即可 缺点:一套流水线或者流程就用来解 ...

  2. Java学习笔记:02面向对象-重写_this_super_抽象类

    02面向对象-重写/this/super/抽象类 ****1.this和super 作用: this: 区分本类的成员变量和局部变量同名情况 super:区分父类的成员变量和局部变量同名情况 用法: ...

  3. OC语言-02面向对象的三大特性

    01封装 #import <Foundation/Foundation.h> @interface Student : NSObject { //@public 成员变量尽量不使用 int ...

  4. TypeScript之面向对象初体验

    1.安装nodejs和vscode: nodejs : https://nodejs.org/en/ Visual Studio Code :  https://www.visualstudio.co ...

  5. Typescript的面向对象

    封装: var Greeter = (function () { function Greeter(message) { this.greeting = message; } Greeter.prot ...

  6. JS高级. 02 面向对象、创建对象、构造函数、自定义构造函数、原型

    面向对象的三大特性: 封装 a)  把一些属性和方法装到一个对象里 2.  继承 a)  js中的继承是指:   一个对象没有一些方法和属性,而另一个对象有 把另一个个对象的属性和方法,拿过来自己用, ...

  7. PHP进阶之路 -- 02 面向对象

    PHP进阶之路-- 之 “面向对象” 基础 概念 类的介绍和定义 类的属性 类常量 类的自动加载 构造函数和析构函数 访问控制 对象继承 范围解析操作符 static静态关键字 抽象类 对象接口 Tr ...

  8. Java知识系统回顾整理01基础02面向对象01类和对象

    一.面向对象实例--设计英雄这个类 LOL有很多英雄,比如盲僧,团战可以输,提莫必须死,盖伦,琴女 所有这些英雄,都有一些共同的状态 比如,他们都有名字,hp,护甲,移动速度等等 这样我们就可以设计一 ...

  9. TypeScript——02——TS基本数据类型介绍和使用

    一,TS的数据类型 ES6的数据类型: 6种基本数据类型 Boolean Number String Symbol undefined null 3种引用类型 Array Function Objec ...

  10. TypeScript与面向对象

    目录 1.引 2.类(class) 3.构造函数和this 4.继承 5.super 6.抽象类 7.接口 8.属性的封装 9.泛型 1.引 简而言之就是程序之中所有的操作都需要通过对象来完成.一切操 ...

随机推荐

  1. 一文搞懂 ARM 64 系列: 寄存器

    ARM 64中包含多种寄存器,下面介绍一些常见的寄存器. 1 通用寄存器 ARM 64包含31个64bit寄存器,记为X0~X30. 每一个通用寄存器,它的低32bit都可以被访问,记为W0~W30. ...

  2. js jquery input radio点击事件

    HTML: <input type="radio" name="myname" value="1" />1 <input ...

  3. 10位,13位时间戳转为C#.NET格式时间 DateTime

    10位,13位时间戳转为C#.NET格式时间 DateTime - public static DateTime ToDateTime( string timestamp) { var tz = Ti ...

  4. thinkpad-内置电池关闭方法

    -- -- 进入BIOS- Power- Disable Built-in Battery - 选择yes是关闭 (No打开内置电池)

  5. 使用 ClickHouse 做日志分析

    原作:Monika Singh & Pradeep Chhetri 这是我们在 Monitorama 2022 上发表的演讲的改编稿.您可以在此处找到包含演讲者笔记的幻灯片和此处的视频. 当 ...

  6. mybatis insert foreach批量添加

    mybatis insert foreach批量添加 int insertSelectiveBatch(List<ImageDetailEntity> myList); //写法1 < ...

  7. WPF/C#:在DataGrid中显示选择框

    前言 在使用WPF的过程中可能会经常遇到在DataGrid的最前或者最后添加一列选择框的需求,今天跟大家分享一下,在自己的项目中是如何实现的. 整体实现效果如下: 如果对此感兴趣,可以接下来看具体实现 ...

  8. 交通规划四阶段法:基于 Python 的交通分布预测算法复现 - 附完整代码链接

    目录 交通规划四阶段法:基于 Python 的交通分布预测算法复现 - 附完整代码链接 我只是想使用这些代码 下载代码文件 代码的使用方法 合作 部分代码内容的展示 交通规划四阶段法:基于 Pytho ...

  9. python logging日志没有写入到指定文件,写到其他项目的日志文件

    背景: 项目A为主框架项目,使用到了项目B的方法 项目A.B均有封装好的日志方法,且均在封装好的日志文件里面,增加了logger = MyLogger().info,其他文件要使用日志时,引入logg ...

  10. 3568F-Linux-RT系统测试手册