TypeScript接口
接口是一系列抽象方法的声明,是一些方法特征的集合,这些方法都应该是抽象的,需要具体的类去实现,然后第三方就可以通过这组抽象方法调用,让具体的类执行具体的方法。
TS接口定义
interface interface_name {
}
需要注意:接口不能转换为JS,它只是TS的一部分。
接口继承
接口继承,即可以通过其他接口来扩展自己。TS允许继承多个接口。继承关键字extends。
- 单接口继承
Child_interface_name extends super_interface_name
- 多接口继承
Child_interface_name extends super_interface1_name, super_interface2_name,…,super_interfaceN_name
继承的各个接口使用,逗号分隔。
TypeScript类
TS是面向对象的JS。类描述了所创建的对象共同的属性和方法。TS支持面向对象的所有特性,如类、接口等。
类定义方式
class class_name {
// 类作用域
}
定义类的关键字class,后面紧跟类名,类可以包含以下几个模块:
- 字段:字段是类里面声明的变量。
- 构造函数:类实例化时调用,可以为类的对象分配内存。
- 方法:对象要执行的操作。
类的继承
TS支持继承类,关键字extends,子类除了不能继承父类的私有成员(方法和属性)和构造函数,其他都可以继承。TS一次只能继承一个类,不支持继承多个类,但TS支持多重继承(a继承b,b继承c)。
语法
class child_class_name extends parent_class_name
继承类的方法重写
类继承后。子类可以对父类的方法重新定义,即方法重写。其中super关键字是对父类的直接引用,该关键字可以引用父类的属性和方法。
static关键字
用于定义类的数据成员(属性和方法)为静态的,静态成员可以直接通过类名调用。
访问控制修饰符
TS中,可以使用它来保护对类、变量、方法和构造方法的访问。
- public(默认):公有,可以在任何地方被访问。
- protected:可以被其自身以及其子类和父类访问。
- private:私有,只能被其定义所在的类访问。
类和接口
类可以实现接口,使用关键字implements,并将interset字段作为类的属性使用。
TypeScript对象
TypeScript类型模板
TS中的对象必须是特定类型的实例。
var sites = {
site1: "Runoob",
site2: "Google",
sayHello: function () { } // 类型模板
};
sites.sayHello = function () {
console.log("hello " + sites.site1);
};
sites.sayHello();
TypeScript命名空间
目的:解决重名问题。
命名空间定义了标识符的可见范围,一个标识符可以在多个名字空间中定义,它在不同名字空间中含义互不相干。(在一个新的名字空间中定义任何标识符,它们不会和任何已有标识符发生冲突,因为已有的定义都处于其他名字空间中。)
语法格式:namespace
namespace SomeNameSpaceName {
export interface ISomeInterfaceName { }
export class SomeClassName { }
}
以上定义了一个命名空间SomeNameSpaceName,若需要在 外部可以调用SomeNameSpaceName中的类和接口,则需要在类和接口添加export关键字。
要在另一个命名空间调用的语法格式:
SomeNameSpaceName.SomeClassName;
如果一个命名空间在一个单独的TypeScript文件中,则应使用三斜杠///引用它,语法:
/// <reference path = "SomeFileName.ts" />
嵌套命名空间
可以将命名空间定义在另一个命名空间里。成员的访问使用.来实现。
namespace namespace_name1 {
export namespace namespace_name2 {
export class class_name { }
}
}
TypeScript模块
模块是在其自身的作用域里执行,并不是在全局作用域,这意味着定义在模块里面的变量、函数和类等在模块外部是不可见的,除非明确地使用 export 导出它们。类似地,我们必须通过 import 导入其他模块导出的变量、函数、类等。
两个模块之间的关系是通过在文件级别上使用 import 和 export 建立的。
模块使用模块加载器去导入其它的模块。 在运行时,模块加载器的作用是在执行此模块代码前去查找并执行这个模块的所有依赖。 大家最熟知的JavaScript模块加载器是服务于 Node.js 的 CommonJS 和服务于 Web 应用的 Require.js。
模块导出export:
// 文件名 : SomeInterface.ts
export interface SomeInterface {
// 代码部分
}
模块在另一个文件中使用import来导入:
`import someInterfaceRef = require("./SomeInterface");
TypeScript声明文件
TS作为JS的超集,在开发时免不了使用其他第三方的JS库。虽然可以直接引用库的类和方法,但无法使用TS诸如类型检查等特性功能。为解决这问题,需要将这些库里面的函数和方法体去掉后只保留导出类型声明,而产生了一个描述JS库和模块信息的声明文件。通过引用这个声明文件,就可以借用TS的各种特性来使用库文件了。
声明文件以.d.ts为后缀,语法格式:
declare module Module_Name {
}
// Ts中引入声明文件
/// <reference path = " runoob.d.ts" />
声明文件不包含实现,他只是类型声明 ,把声明文件加入到TS中。
网友评论