前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >TypeScript 的高级特性

TypeScript 的高级特性

作者头像
Nian糕
修改2024-03-19 11:45:34
1.1K0
修改2024-03-19 11:45:34
举报
Unsplash
Unsplash

在 ES5 中是没有 类(Class) 的概念的,我们通常会通过构造函数定义并生成新对象,而在 ES6 中引入了类(Class)的概念,但 class 的本质是一个语法糖,只是让对象原型的写法更加清晰,而在使用 TypeScript 开发时,大部分代码都是写在类里面的

使用class关键字 + 类名即可完成 类的声明,可以在类里面指定属性和方法,声明一个类之后,我们就可以通过new关键字进行实例化

类的实例化
类的实例化

在声明一个类的时候,我们可以给类的属性和方法指定一个访问控制符,其作用是控制类的属性和方法能否在类外部被访问到,访问控制符一共有三个,public为共有的,即在类的内部和外部都能被访问到,不声明访问控制符,默认即为publicprivate为私有的,即在类的外部无法访问;protected为受保护的,在类的内部和子类当中可以访问到

访问控制符_1
访问控制符_1
访问控制符_2
访问控制符_2
访问控制符_3
访问控制符_3

类的构造函数 其实就是类里的一个方法,该方法只会在类的实例化时被调用,并且只会调用这一次

类的构造函数
类的构造函数
运行结果
运行结果

了解了构造函数之后,我们就可以通过构造函数来建立一个约定,例如,在实例化 Person 类的时候,必须指定name属性,而在构造函数当中,必须给属性写上访问控制符,只有写上访问控制符,才是声明了name属性

构造函数_1
构造函数_1
构造函数_2
构造函数_2

类的继承 通过 extends 关键字来声明一种继承的关系,即当一个类继承另一个类时,它就拥有继承类的所有属性和方法,我们还可以在新声明类里指定新的属性及方法

类的继承extend_1
类的继承extend_1
类的继承extend_2
类的继承extend_2

除了extend关键字外,类的继承还有一个super关键词,这里的super有两个用法,一个是调父类的构造函数,这里有个硬性规定是子类的构造函数必须调用一下父类的构造函数,第二个用法是,用来调父类的其他方法,通过super.进行调用

类的继承super_1
类的继承super_1
类的继承super_2
类的继承super_2
运行结果
运行结果

泛型

泛型(generic)指的是参数化的类型,一般用来限制集合的内容,我们结合上个例子进行说明,我们声明一个n2数组,并指定 Array 类型,在类型后加上<Person>来限制该数组,它规定了这个数组里只能放Person

泛型
泛型

接口

接口(interface)是用来建立某种代码约定,使得其他开发者在调用某个方法或创建新的类时必须遵循接口所定义的代码约定,JavaScript 里是没有接口这一概念的,而 TypeScript 中提供了两个关键字来支撑接口这个特性

使用interface关键字 + 接口名即可声明一个接口,接口有两种使用方式,一种是作为一个方法的参数类型声明,使用这种方式时,JavaScript 会检查传入参数是否满足接口声明的所有属性,第二种用法是,在接口里面声明一个方法,那么所有声明实现这个接口的类必须得实现这个方法

接口_1
接口_1
接口_2
接口_2

模块

模块(Module)可以帮助开发者将代码分割为可重用的单元。开发者可以自己决定将模块中的哪些资源(类、方法、变量)暴露出去供外部使用,哪些资源只在模块内使用

模块
模块

注解

注解(annotion)为程序的元素(类、方法、变量)加上更直观更明了的说明,这些说明信息与程序的业务逻辑无关,而是供指定的工具或框架使用的,下面的这段代码是 Angular 2 框架中的注解示例

代码语言:javascript
复制
import { Component } from '@angular/core'

@Component({
    selector: 'app-root',
    templateUrl: './app.component.html',
    styleUrls: ['./app.component.css']
})

export class AppComponent {
    title = 'niangao'
}

类型定义文件

类型定义文件(*.d.ts)用来帮助开发者在 Typescript 中使用已有的 JavaScript 的工具包,例如 jQuery,具体可参考 Github DefinitelyTyped 项目,这里再给大家介绍一个工具 Typings,这是专门用来安装类型定义文件的

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018.08.10 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 泛型
  • 接口
  • 模块
  • 注解
  • 类型定义文件
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档