TypeScript简明教程

TypeScript简明教程TypeScript 是微软开发的 JavaScript 的超集 TypeScript 兼容 JavaScript 可以载入 JavaScript 代码然后运行 TypeScript 与 JavaScript 相比进步的地方包括 加入注释 让编译器理解所支持的对象和函数 编译器会移除注释 不会增加开销 增加一个完整的类结构 使之更新是传统的面向对象语言 为什么会有 TypeScript Ja

TypeScript简明教程

TypeScript 是微软开发的 JavaScript 的超集,TypeScript兼容JavaScript,可以载入JavaScript代码然后运行。TypeScript与JavaScript相比进步的地方 包括:加入注释,让编译器理解所支持的对象和函数,编译器会移除注释,不会增加开销;增加一个完整的类结构,使之更新是传统的面向对象语言。

为什么会有TypeScript?

JavaScript 与 TypeScript 的区别

TypeScript 是 JavaScript 的超集,扩展了 JavaScript 的语法,因此现有的 JavaScript 代码可与 TypeScript 一起工作无需任何修改,TypeScript 通过类型注解提供编译时的静态类型检查。TypeScript 可处理已有的 JavaScript 代码,并只对其中的 TypeScript 代码进行编译。

TypeScript优势

解决痛点

TypeScript的设计解决了JavaScript的“痛点”:弱类型和没有命名空间;这导致程序很难模块化,不适合开发大型程序。

语法提示

编写程序时,编辑器将提供精准的语法提示,以帮助大家更方便地实践面向对象的编程。

容易上手

TypeScript的一个设计亮点,是它并没有抛弃JavaScript的语法另起炉灶,而是做成了JavaScript的超集,任何合法的JavaScript的语句在TypeScript下都是合法的,且沿用了JavaScript的使用习惯和惯例,可以说学习成本很低。

痛点的消除

编译时的强类型

TypeScript设计了一套类型机制来保证编译时的强类型判断。

简单举例:当你申明变量的类型后,其他类型的赋值将会引起编译错误。

TypeScript简明教程

有意思的是,类似于C#的var变量声明,TypeScript会对赋值的变量进行类型推断。

例如:

TypeScript简明教程

模块化

利用TypeScript的关键词module,可以达到类似于命名空间的效果,而export可以控制是否被外部访问。

例如:

TypeScript简明教程

从以上例子可以看出:

  1. module可以嵌套,访问时用.作分隔符,也可以用.作为分隔符来简写module的嵌套;
  2. 只有带关键词export的才可以被外部访问;
  3. module可以合并,但是非export的对象在其他module下,即使是同一个名称,也不能被访问,如funcA()

TypeScript基本语法

TypeScript的数据类型分为BooleanNumberStringArrayEnumAnyVoid这七种类型。

Boolean类型

TypeScript简明教程

Number类型

TypeScript简明教程

String类型

TypeScript简明教程

Array类型

TypeScript简明教程

Enum枚举类

typescript-8.png

Any不确定类型

typescript-9.png

Void类型

typescript-10.png

基本语法

// 通过class创建类 class Animal { 
    // 类的属性 name: string; // 类的构造器 constructor(name: string) { this.name = name; } // 类的方法 sayHello():void{ alert("hello animal:"+this.name); } } // 实例化类 var tom = new Animal("tom"); tom.sayHello(); 

类的继承

// 通过class创建类 class Animal { 
    // 类的属性 name: string; // 类的构造器 constructor(name: string) { this.name = name; } // 类的方法 sayHello(): void { alert("hello animal:" + this.name); } } // 继承Animal class Cat extends Animal { 
    // 重写方法 sayHello(): void { alert("hello cat:" + this.name); } } class Dog extends Animal { 
    sayHello(): void { alert("hello dog:" + this.name); } } 

修饰符

class Animal { 
    private name: string; // 这里把name修饰符改为private constructor(name: string) { this.name = name; } sayHello(): void { alert("hello animal:" + this.name); } } class Cat extends Animal { 
    sayHello(): void { alert("hello cat:" + this.name); //这里会报错,因为无法引用父类private修饰的属性 } } class Dog extends Animal { 
    sayHello(): void { alert("hello dog:" + this.name); //这里会报错,因为无法引用父类private修饰的属性 } } 

当把属性的修饰符改成私有时,子类继承以后便会报错。那么如何解决呢?看下一节。

Get/Set访问器

class Animal { 
    private name: string; get name(): string { //通过get和set解决子类不能引用父类private修饰的属性的问题 return this.name; } set name(name: string) { this.name = name; } constructor(name: string) { this.name = name; } sayHello(): void { alert("hello animal:" + this.name); } } class Cat extends Animal { 
    sayHello(): void { alert("hello cat:" + this.name); } } class Dog extends Animal { 
    sayHello(): void { alert("hello dog:" + this.name); } } 

静态属性

class Table { static width: Number = 100; static height: Number = 50 } var width: Number = Table.width; 

接口

基本语法

interface Graphic { 
    width: Number; height: Number; } class Square implements Graphic { 
    width: Number; height: Number; constructor() { this.width = 100; this.height = 100; } constructor(width: Number, height: Number) { this.height = height; this.width = width; } } 

继承接口

interface Graphic { 
    width: Number; height: Number; } interface PenStroke { 
    penWidth: Number; } interface Square extends Graphic, PenStroke { 
    sideLength: number; } 

模块

模块的作用

  1. 防止命名空间冲突;
  2. 将一个功能模块很容易的划分到不同文件中,更容易维护。

基本语法

module MyDemo{ export class Animal { 
    private name: string; get name(): string { return this.name; } set name(name: string) { this.name = name; } constructor(name: string) { this.name = name; } sayHello(): void { alert("hello animal:" + this.name); } } export class Cat extends Animal { 
    sayHello(): void { alert("hello cat:" + this.name); } } } 

别名

module Shapes { export module Polygons{ export class Square{} export class Triangle{} } } import polygons = Shapes.Polygons; var sq = new polygons.Square(); //类似于 new Shapes.Polygons.Square() var sq1 = new Shapes.Polygons.Square(); 

函数

基本语法

function add(x:number,y:number):number{ 
    return x+y; } var myAdd = function(x:number,y:number):number{ 
    return x+y; } 
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/206012.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月19日 下午4:41
下一篇 2026年3月19日 下午4:41


相关推荐

  • 计算机网络基础知识整理「建议收藏」

    参考书目:计算机网络(第6版谢希仁)一、概述1、三网:电信网络、有线电视网络和计算机网络2、电路交换、报文交换、分组交换的比较电路交换公共电话网(PSTN网)和移动网(包括GSM和CDMA网)采用的都是电路交换技术,它的基本特点是采用面向连接的方式,在双方进行通信之前,需要为通信双方分配一条具有固定宽带的通信电路,通信双方在通信过程中一直占用所分配的资源,直到通信结束,并且在电…

    2022年4月17日
    82
  • OpenClaw 在边缘计算场景下表现如何?Jetson Orin Nano 再测

    OpenClaw 在边缘计算场景下表现如何?Jetson Orin Nano 再测

    2026年3月13日
    2
  • GB2312编码_gb2312是简体中文的编码格式

    GB2312编码_gb2312是简体中文的编码格式在区码和位码的基础上,分别加上0XA0的偏移,便是GB2312编码;我们制作ASCII字库时,一般只做可以显示出来的字符字模,前面命令型的ASCII字符,我们不做字模,即从“空格开始”,ASCII表

    2022年8月3日
    6
  • 一文解读光纤收发器单模和多模的区别![通俗易懂]

    一文解读光纤收发器单模和多模的区别![通俗易懂]光纤收发器是进行光电信号转换的设备,现在光纤收发器的技术越发成熟,应用也越来越广泛,所以我们在选择或者采购光纤收发器时,对光纤收发器做一定的了解是有好处的,接下来我们就来给大家详细介绍一下光纤收发器的单模和多模的区别?一起来看看吧!光纤收发器有单模和多模之分,其最根本的区别就是传输距离远近。单模光纤收发器的工作模式是单节点、一个端口信号传输,所以信号传输距离比较长,组成跨城域局域网的建设;多模光纤收发器就刚好相反,其工作模式是多节点、多端口信号传输,所以信号传输距离比较短,但是价格低、使用方便,多用

    2022年10月21日
    5
  • 使用多线程实现文件的下载_多线程写同一个文件

    使用多线程实现文件的下载_多线程写同一个文件首先,我们要下载一个文件,可以通过多线程的方式快速下载!!!多线程下载文件的步骤:1、首先要知道请求下载的服务器支持断点下载,即支持request头信息中的Range的设置2、然后通过对请求头设置httpRequest.setRequestProperty(“Range”,”bytes=”+startIndex+”-“+endIndex);3、然后获取整个文件的大小4、在……

    2025年10月21日
    5
  • WebStorm如何设置字体大小

    WebStorm如何设置字体大小由于最近要练习一些js代码,特地装了WebStorm,但是发现字体太小,因此将已知的两种方法整理出来。一、Ctrl+滚动滑轮调整字体大小File—>Settings(Ctrl+Alt+s)—>Editor—>General—>Change font size(Zoom)……前面的方框打对勾。如下图点击ok即可。在编辑代码页面Ctrl+滚动滑轮…

    2022年6月13日
    44

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号