专业做网文的网站,百度反馈中心,广东省农业农村厅江毅,郑州seo优化TypeScript 接口
TypeScript 接口定义如下#xff1a;
interface interface_name {
}
以下实例中#xff0c;我们定义了一个接口 IPerson#xff0c;接着定义了一个变量 customer#xff0c;它的类型是 IPerson。
customer 实现了接口 IPerson 的属性和方法。
interf…TypeScript 接口
TypeScript 接口定义如下
interface interface_name {
}
以下实例中我们定义了一个接口 IPerson接着定义了一个变量 customer它的类型是 IPerson。
customer 实现了接口 IPerson 的属性和方法。
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())
联合类型和接口
以下实例演示了如何在接口中使用联合类型
interface RunOptions { program:string; commandline:string[]|string|(()string);
}
这里commandline可以使字符串数组字符串或者函数表达式
接口和数组
接口中我们可以将数组的索引值和元素设置为不同类型索引值可以是数字或字符串。
设置元素为字符串类型
interface namelist { [index:number]:string
} // 类型一致正确
var list2:namelist [Google,Runoob,Taobao] 接口继承
接口继承就是说接口可以通过其他接口来扩展自己。
Typescript 允许接口继承多个接口。
继承使用关键字 extends。
单接口继承语法格式
Child_interface_name extends super_interface_name
多接口继承语法格式
Child_interface_name extends super_interface1_name, super_interface2_name,…,super_interfaceN_name
继承的各个接口使用逗号 , 分隔。
interface Person { age:number
} interface Musician extends Person { instrument:string
} var drummer Musician{};
drummer.age 27
drummer.instrument Drums
TypeScript 类
TypeScript 是面向对象的 JavaScript。
类描述了所创建的对象共同的属性和方法。
TypeScript 支持面向对象的所有特性比如 类、接口等。
TypeScript 类定义方式如下
class class_name { // 类作用域
}
定义类的关键字为 class后面紧跟类名类可以包含以下几个模块类的数据成员 字段 − 字段是类里面声明的变量。字段表示对象的有关数据。 构造函数 − 类实例化时调用可以为类的对象分配内存。 方法 − 方法为对象要执行的操作。
class Car { // 字段engine:string; // 构造函数constructor(engine:string) { this.engine engine } // 方法disp():void { console.log(函数中显示发动机型号 : this.engine) }
} // 创建一个对象
var obj new Car(XXSY1)// 访问字段
console.log(读取发动机型号 : obj.engine) // 访问方法
obj.disp()
类的继承
TypeScript 支持继承类即我们可以在创建类的时候继承一个已存在的类这个已存在的类称为父类继承它的类称为子类。
类继承使用关键字 extends子类除了不能继承父类的私有成员(方法和属性)和构造函数其他的都可以继承。
TypeScript 一次只能继承一个类不支持继承多个类但 TypeScript 支持多重继承A 继承 BB 继承 C。
class child_class_name extends parent_class_name
继承类的方法重写 doPrint():void { super.doPrint() // 调用父类的函数console.log(子类的 doPrint()方法。)
static 关键字
static 关键字用于定义类的数据成员属性和方法为静态的静态成员可以直接通过类名调用。 static num:number; static disp():void { console.log(num 值为 StaticMem.num) } instanceof 运算符
class Person{ }
var obj new Person()
var isPerson obj instanceof Person;
console.log(obj 对象是 Person 类实例化来的吗 isPerson);
访问控制修饰符
TypeScript 中可以使用访问控制符来保护对类、变量、方法和构造方法的访问。TypeScript 支持 3 种不同的访问权限。 public默认 : 公有可以在任何地方被访问。 protected : 受保护可以被其自身以及其子类访问。 private : 私有只能被其定义所在的类访问。
class Encapsulate { str1:string hello private str2:string world
}var obj new Encapsulate()
console.log(obj.str1) // 可访问
console.log(obj.str2) // 编译错误 str2 是私有的
类和接口
类可以实现接口使用关键字 implements并将 interest 字段作为类的属性使用。
以下实例中 AgriLoan 类实现了 ILoan 接口
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 对象
对象是包含一组键值对的实例。 值可以是标量、函数、数组、对象等如下实例
var object_name { key1: value1, // 标量key2: value, key3: function() {// 函数}, key4:[content1, content2] //集合
}
TypeScript 类型模板
假如我们在 JavaScript 定义了一个对象
var sites {site1: Runoob,site2: Google,sayHello: function () { } // 类型模板
};
sites.sayHello function () {console.log(hello sites.site1);
};
sites.sayHello();
通过类型目标可以动态添加方法和实现方式
鸭子类型(Duck Typing)
鸭子类型英语duck typing是动态类型的一种风格是多态(polymorphism)的一种形式。
在这种风格中一个对象有效的语义不是由继承自特定的类或实现特定的接口而是由当前方法和属性的集合决定。
interface IPoint { x:number y:number
}
function addPoints(p1:IPoint,p2:IPoint):IPoint { var x p1.x p2.x var y p1.y p2.y return {x:x,y:y}
} // 正确
var newPoint addPoints({x:3,y:4},{x:5,y:1}) // 错误
var newPoint2 addPoints({x:1},{x:4,y:3})