一种JavaScript超集的编程语言TypeScript
Type是一种由微软开发的自由和开源的编程语言。是一个开源的、跨平台且带有类型系统的Java超集,它可以编译为纯Java,然后运行在任意的浏览器和其他环境中。它使开发者可以使用一些未来Java标准(ECMA 6和7)中的特性。Type为Java添加了可选的静态类型、类和模块,让大型Java应用可以使用更好的工具并拥有更清晰的结构。
Type的作用
Type扩展了Java的语法,所以任何现有的Java程序可以不加改变的在Type下工作。Type是为大型应用之开发而设计,而编译时它产生 Java 以确保兼容性。
Type 支持为已存在的 Java 库添加类型信息的头文件,扩展了它对于流行的库如 jQuery,MongoDB,Node.js 和 D3.js 的好处。
结合微软开发的开源代码编辑器 Visual Studio Code,使用Type 开发项目具有以下优点:
可以使用最新的 ES2017 语言特性。
非常精准的代码提示。
编辑代码时具有即时错误检查功能,可以避免诸如输错函数名这种明显的错误。
非常精准的代码重构功能。
非常方便的断点调试功能。
编辑器集成调试功能。
语法特性
类 Classes
接口 Interfaces
模块 Modules
类型注解 Type annotations
编译时类型检查 Compile time type checking
Type 中的几种基础类型:
boolean为布尔值类型,如let isDone: Boolean = false
number为数值类型,如let decimal: number = 6;
string为字符串类型,如let color: string = 'blue'
数组类型,如let list: number[] = [ 1, 2, 3 ]
元组类型,如let x: [ string, number ] = [ "hello", 10 ]
枚举类型,如enum Color { Red, Green, Blue }; let c: Color = Color.Green
any为任意类型,如let notSure: any = 4; notSure = "maybe a string instead"
void为空类型,如let unusable: void = undefined
null和undefined
never表示没有值的类型,如function error(message: string): never { throw new Error(message); }
多种类型可以用|隔开,比如number | string表示可以是number或string类型
Arrow 函数 (类似 C# 的 Lambda 表达式)
接口(interface)
以下是接口的几种常见形式:
// 定义具有 color 和 width 属性的对象 interface SuperConfug { color: string; width: number; } // readonly 表示只读,不能对其属性进行重新赋值 interface Point { readonly x: number; readonly y: number; } // ?表示属性是可选的, // [propName: string]: any 表示允许 obj[xxx] 这样的动态属性 interface SquareConfig { color?: string; width?: number; [propName: string]: any; } // 函数接口 interface SearchFunc { (source: string, subString: string): boolean; }
实际上 Type 的接口还有很多种的表示形式,详细信息可以参考这里:Type Hankbook - Interfaces
函数
以下是几种函数接口的定义方式:
// 普通函数 function add(a: number, b: number): number { return a + b; } // 函数参数 function readFile(file: string, callback: (err: Error | null, data: Buffer) => void) { fs.readFile(file, callback); } // 通过 type 语句定义类型 type CallbackFunction = (err: Error | null, data: Buffer) => void; function readFile(file: string, callback: CallbackFunction) { fs.readFile(file, callback); } // 通过 interface 语句来定义类型 interface CallbackFunction { (err: Error | null, data: Buffer): void; } function readFile(file: string, callback: CallbackFunction) { fs.readFile(file, callback); }
以上几种定义方式有着微妙的差别,还是需要在深入实践 Type 后才能合理地运用。详细信息可以参考这里:Type Handbook - Functions
类
Type 的类定义跟 Java 的定义方法类型一样,但是增加了public, private, protected, readonly等访问控制修饰符:
class Person { protected name: string; constructor(name: string) { this.name = name; } } class Employee extends Person { private department: string; constructor(name: string, department: string) { super(name); this.department = department; } public getElevatorPitch() { return `Hello, my name is ${this.name} and I work in ${this.department}.`; } }
需要注意的是,这些修饰符仅在 Type 程序中才有效,如果直接使用 Java 是可以在类外部访问到被声明为 private 或者 protocted 的类成员,也可以修改被声明为 readonly 的成员变量。
如果没有指定访问控制关键字,则默认为 public。
泛型
Type 的泛型和接口使得具备较强的类型检查能力的同时,很好地兼顾了 Java 语言的动态特性。以下是使用泛型的简单例子:
function identity(arg: T): T { return arg; } const map = new Map(); map.set('a', 123); function sleep(ms: number): Promise{ return new Promise((resolve, reject) => { setTimeout(() => resolve(ms), ms); }); }
Type 2.0 之后增加了很多泛型相关的语法,比如K extends keyof T这种,对初学者来说理解起来并不容易,平时可能也并不会使用到,详细信息可以参考这里:Type Handbook - Generics
以上便是 Type 相对于 Java 增加的核心内容。
一、推荐使用迅雷或快车等多线程下载软件下载本站资源。
二、未登录会员无法下载,登录后可获得更多便利功能,若未注册,请先注册。
三、如果服务器暂不能下载请稍后重试!总是不能下载,请点我报错 ,谢谢合作!
四、本站大部分资源是网上搜集或私下交流学习之用,任何涉及商业盈利目的均不得使用,否则产生的一切后果将由您自己承担!本站将不对任何资源负法律责任.如果您发现本站有部分资源侵害了您的权益,请速与我们联系,我们将尽快处理.
五、如有其他问题,请加网站设计交流群(点击这里查看交流群 )进行交流。
六、如需转载本站资源,请注明转载来自并附带链接
七、本站部分资源为加密压缩文件,统一解压密码为:www.aizhanzhe.com
- 1CSS控制文字在Div最底部显示
- 2Thinkphp5如何配置IP+端口访问项目模块
- 3elementUI el-dialog弹框居中
- 4教你如何搭建及优化站点
- 5国内互联网视频行业运营分析
- 6service mysql start出错,mysql不能启动,解决mysql: unrecognized service错误
- 7CSS实现悬浮顶部的Div工具栏
- 8记一次Thinkphp5.1框架mysql数据库崩溃(SQLSTATE [08004] Too many connections)
- 9连接SQL Server数据库提示:Login failed for user 'sa'错误的解决方案
- 10Thinkphp3.2在centos7上设置计划任务的方法