热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Typescript基本语法介绍

目录一、Typescript总体介绍二、Typescript安装三、Typescript文件编译运行四、Typescript基础类型1、基本数据类型2、引用数据类型3、

目录

一、Typescript总体介绍

二、 Typescript安装

三、Typescript文件编译运行

四、Typescript基础类型

1、基本数据类型

2、引用数据类型

3、元组

4、枚举

5、any

6、void

7、函数的可选参数

8、字面量类型

五、面向对象

1、接口

1.1、类接口

1.2、对象接口




一、Typescript总体介绍

Typescript是Javascript超集,是Javascript+强类型。Javascript 是弱类型语言,无法进行类型校验;而Typescript解决了这个问题,它可以对类型进行校验。

跨平台:TypeScript 编译器可以安装在任何操作系统上,包括 Windows、macOS 和 Linux。

ES6 特性:TypeScript 包含 ECMAScript 2015 (ES6) 的大部分特性,例如箭头函数。

面向对象的语言:TypeScript 提供所有标准的 OOP 功能,如类、接口和模块。

静态类型检查:TypeScript 使用静态类型并帮助在编译时进行类型检查。因此,你可以在编写代码时发现编译时错误,而无需运行脚本。

可选的静态类型:如果你习惯了 Javascript 的动态类型,TypeScript 还允许可选的静态类型。


二、 Typescript安装

通过cnpm全局安装:

cnpm install -g typescript

安装完后,我们可以查看版本,检查是否安装成功:(tsc是Typescript编译器)

tsc --version


三、Typescript文件编译运行

我们需要将Typescript文件(以.ts结尾)通过Typescript编译器tsc编译成.js文件才能在node环境下运行。

tsc xxx.ts        ---将ts文件编译为js文件
node xxx.js     ---运行js文件


四、Typescript基础类型

TypeScript支持与Javascript几乎相同的数据类型,此外还提供了实用的枚举类型。


1、基本数据类型

//数字
let a: number = 1 //限定了a是number类型的变量,不能给a赋除number类型的其他值,否则会报错
//字符串
let b: string = 'hello'
//布尔
let c: boolean = true
//null
let d: null = null
//undefined
let e: undefined = undefined
console.log(a, b, c, d, e);//1 hello true null undefined

2、引用数据类型

// 1.对象
// 给Object类型的变量赋值数字、字符串、布尔类型的值不会报错,因为它们会进行自动装箱
let obj: Object = 1
let obj1: Object = '1'
let obj2: Object = true
let obj3: Object
obj3 = { name: 'zahngsan', age: 14 }
console.log(obj, obj1, obj2, obj3); //1 1 true { name: 'zahngsan', age: 14 }// 2.数组
//数组元素只能是数字类型
let arr: number[] = [1, 2, 3, 4]
//数组元素可以是字符串、数字、对象、函数
let arr1: (string | number | Object | Function)[] = ['1', 2, 3, {}, function () { }]
// 泛型
let arr2: Array = [4, 5, 6]
console.log(arr, arr1, arr2);//[ 1, 2, 3, 4 ] [ '1', 2, 3, {}, [Function (anonymous)] ] [ 4, 5, 6 ]//3.函数
let foo: Function = () => {console.log('我是函数');
}
foo()//我是函数

3、元组

元组类型允许表示一个已知元素数量和类型的数组,各元素的类型不必相同。 比如,你可以定义一对值分别为 stringnumber类型的元组。

let arr3: [number, string, boolean] = [1, 'hello', true]
console.log(arr3);//[ 1, 'hello', true ]

4、枚举

enum类型是对Javascript标准数据类型的一个补充。

// 枚举类型
// 1.默认枚举
enum Season {spring,summer,autumn,winter
}
console.log(Season);
//输出结果:
// {
// '0': 'spring',
// '1': 'summer',
// '2': 'autumn',
// '3': 'winter',
// spring: 0,
// summer: 1,
// autumn: 2,
// winter: 3
// }// 2.字符串枚举
enum Gender {male = '男',female = '女'
}
console.log(Gender);//{ male: '男', female: '女' }

5、any

有时候我们会想要为那些在编程阶段还不清楚类型的变量指定一个类型。 这些值可能来自于动态的内容,比如来自用户输入或第三方代码库。 这种情况下,我们不希望类型检查器对这些值进行检查而是直接让它们通过编译阶段的检查。那么我们可以使用any类型来标记这些变量:

let a:any = 3;
a = true;
console.log(a); //true

6、void

某种程度上来说,void类型像是与any类型相反,它表示没有任何类型。 当一个函数没有返回值时,你通常会见到其返回值类型是void

// 当函数不需要返回值,可以给函数设置void
function sum():void{console.log('我被调用了');
}
sum()//我被调用了

7、函数的可选参数

可选参数:在可选参数名的后面添加 ?(问号)

// 设置函数参数可选 ? 表示可有可无
function sum(b: string, a?: number) {console.log('我被调用了');}
sum('1')

8、字面量类型

我们给str1赋值为字符串类型,之后更改str1变量的值时,更改的值也必须是字符串类型,而不能是其他类型:

let str1 = 'Hello';
str1 = 'world' //可以
str1 = 1 //不行

五、面向对象


1、接口

接口可以理解为是抽象到极致的抽象类,接口中只能存在抽象方法和属性。接口通过interface关键字来声明。

接口也可以理解成一种标准,是特殊的类,特殊的对象。我们使用类去实现接口,接口就是标准,类按照标准去实现,使用类去实现接口,接口的属性和方法,类都必须具备。


1.1、类接口

接口可以理解成特殊的类

// 声明一个接口
interface StudentInterFace {name;say(msg: string): void; //未实现的方法,(抽象方法,没有方法体的方法)
}
// 使用类来实现上述接口
class Student implements StudentInterFace {// 使用类去实现接口,类需要具备接口的全部属性和方法name;say(msg: string): void {console.log(this.name + '说' + msg);};// 类还可以有自己的方法constructor(name) {this.name = name}foo() {}
};
let student: StudentInterFace = new Student('zhangsan');
student.say('hello'); //zhangsan说hello

1.2、对象接口

接口还可以理解成一种特殊的类

enum Gender {male = '男',female = '女'
}
class Student {name: string;age: number;// gender设置成可枚举类型,限定性别只能是男或者女gender: Gender
}
//声明一个接口
interface PropInterFace {// data是一个数组,数组元素必须是Student类data: Array,//visible是布尔类型visible: boolean
};//使用对象来实现上述接口
let prop: PropInterFace = {data: [{ name: 'zhangsan', age: 12, gender: Gender.female },{ name: 'lisi', age: 16, gender: Gender.male }],visible: false
}
console.log(prop);


推荐阅读
  • Skywalking系列博客1安装单机版 Skywalking的快速安装方法
    本文介绍了如何快速安装单机版的Skywalking,包括下载、环境需求和端口检查等步骤。同时提供了百度盘下载地址和查询端口是否被占用的命令。 ... [详细]
  • Metasploit攻击渗透实践
    本文介绍了Metasploit攻击渗透实践的内容和要求,包括主动攻击、针对浏览器和客户端的攻击,以及成功应用辅助模块的实践过程。其中涉及使用Hydra在不知道密码的情况下攻击metsploit2靶机获取密码,以及攻击浏览器中的tomcat服务的具体步骤。同时还讲解了爆破密码的方法和设置攻击目标主机的相关参数。 ... [详细]
  • 本文分享了一个关于在C#中使用异步代码的问题,作者在控制台中运行时代码正常工作,但在Windows窗体中却无法正常工作。作者尝试搜索局域网上的主机,但在窗体中计数器没有减少。文章提供了相关的代码和解决思路。 ... [详细]
  • 本文介绍了C#中生成随机数的三种方法,并分析了其中存在的问题。首先介绍了使用Random类生成随机数的默认方法,但在高并发情况下可能会出现重复的情况。接着通过循环生成了一系列随机数,进一步突显了这个问题。文章指出,随机数生成在任何编程语言中都是必备的功能,但Random类生成的随机数并不可靠。最后,提出了需要寻找其他可靠的随机数生成方法的建议。 ... [详细]
  • 本文介绍了C#中数据集DataSet对象的使用及相关方法详解,包括DataSet对象的概述、与数据关系对象的互联、Rows集合和Columns集合的组成,以及DataSet对象常用的方法之一——Merge方法的使用。通过本文的阅读,读者可以了解到DataSet对象在C#中的重要性和使用方法。 ... [详细]
  • 1,关于死锁的理解死锁,我们可以简单的理解为是两个线程同时使用同一资源,两个线程又得不到相应的资源而造成永无相互等待的情况。 2,模拟死锁背景介绍:我们创建一个朋友 ... [详细]
  • 本文介绍了在Mac上搭建php环境后无法使用localhost连接mysql的问题,并通过将localhost替换为127.0.0.1或本机IP解决了该问题。文章解释了localhost和127.0.0.1的区别,指出了使用socket方式连接导致连接失败的原因。此外,还提供了相关链接供读者深入了解。 ... [详细]
  • Webmin远程命令执行漏洞复现及防护方法
    本文介绍了Webmin远程命令执行漏洞CVE-2019-15107的漏洞详情和复现方法,同时提供了防护方法。漏洞存在于Webmin的找回密码页面中,攻击者无需权限即可注入命令并执行任意系统命令。文章还提供了相关参考链接和搭建靶场的步骤。此外,还指出了参考链接中的数据包不准确的问题,并解释了漏洞触发的条件。最后,给出了防护方法以避免受到该漏洞的攻击。 ... [详细]
  • 如何在服务器主机上实现文件共享的方法和工具
    本文介绍了在服务器主机上实现文件共享的方法和工具,包括Linux主机和Windows主机的文件传输方式,Web运维和FTP/SFTP客户端运维两种方式,以及使用WinSCP工具将文件上传至Linux云服务器的操作方法。此外,还介绍了在迁移过程中需要安装迁移Agent并输入目的端服务器所在华为云的AK/SK,以及主机迁移服务会收集的源端服务器信息。 ... [详细]
  • 本文讨论了在数据库打开和关闭状态下,重新命名或移动数据文件和日志文件的情况。针对性能和维护原因,需要将数据库文件移动到不同的磁盘上或重新分配到新的磁盘上的情况,以及在操作系统级别移动或重命名数据文件但未在数据库层进行重命名导致报错的情况。通过三个方面进行讨论。 ... [详细]
  • Java学习笔记之面向对象编程(OOP)
    本文介绍了Java学习笔记中的面向对象编程(OOP)内容,包括OOP的三大特性(封装、继承、多态)和五大原则(单一职责原则、开放封闭原则、里式替换原则、依赖倒置原则)。通过学习OOP,可以提高代码复用性、拓展性和安全性。 ... [详细]
  • 本文介绍了如何清除Eclipse中SVN用户的设置。首先需要查看使用的SVN接口,然后根据接口类型找到相应的目录并删除相关文件。最后使用SVN更新或提交来应用更改。 ... [详细]
  • 本文介绍了使用cacti监控mssql 2005运行资源情况的操作步骤,包括安装必要的工具和驱动,测试mssql的连接,配置监控脚本等。通过php连接mssql来获取SQL 2005性能计算器的值,实现对mssql的监控。详细的操作步骤和代码请参考附件。 ... [详细]
  • IjustinheritedsomewebpageswhichusesMooTools.IneverusedMooTools.NowIneedtoaddsomef ... [详细]
  • JDK源码学习之HashTable(附带面试题)的学习笔记
    本文介绍了JDK源码学习之HashTable(附带面试题)的学习笔记,包括HashTable的定义、数据类型、与HashMap的关系和区别。文章提供了干货,并附带了其他相关主题的学习笔记。 ... [详细]
author-avatar
mobiledu2502856973
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有