TypeScript手册中文版 目錄 介紹 0 基本类型 1 布尔类型 1.1 数字 1.2 字符串 1.3 数组 1.4 枚举 1.5 Any 1.6 Void 1.7 接口 2 我们的第一个接口 2.1 可选属性 2.2 函数类型 2.3 数组类型 2.4 类的类型 2.5 扩展接口 2.6 混合类型 2.7 类 3 类 3.1 继承 3.2 Private/Public修饰语 3.3 访问器(Accessors) 3.4 静态属性 3.5 高级技巧 3.6 模块 4 分割文件 4.1 使用外部代码 4.2 2 TypeScript手册中文版 Export = 4.3 别名(Alias) 4.4 可选模块加载和其它一些特殊的加载情景 4.5 使用其他的JavaScript代码库 4.6 模块使用中的一些问题 4.7 函数 5 函数 5.1 函数类型 5.2 可选参数和默认参数 5.3 剩余参数 5.4 Lambdas和'this'的使用 5.5 重载 5.6 泛型 6 泛型中的Hello World 6.1 使用泛型类型变量 6.2 泛型类型 6.3 泛型类 6.4 泛型限定 6.5 常见错误 常见错误信息 混合 7 7.1 8 Mixin的例子 8.1 理解这个例子 8.2 声明合并 9 基本概念 9.1 合并接口 9.2 合并模块 9.3 用模块合并类,函数和枚举 9.4 不被允许的合并 9.5 类型推断 10 3 TypeScript手册中文版 基础 10.1 最佳通用类型 10.2 上下文类型 10.3 类型兼容性 11 起步 11.1 比较两个函数 11.2 枚举 11.3 类 11.4 泛型 11.5 进阶话题 11.6 编写.d.ts文件 12 指导与细则 12.1 例子 12.2 TypeScript 1.5 13 4 TypeScript手册中文版 TypeScript手册中文版 原文:TypeScript Handbook 目录: 基本类型 布尔类型 数字 字符串 数组 枚举 Any Void 接口 我们的第一个接口 可选属性 函数类型 数组类型 类的类型 扩展接口 混合类型 类 类 继承 Private/Public修饰语 访问器(Accessors) 静态属性 高级技巧 模块 分割文件 使用外部代码 Export = 别名(Alias) 介紹 5 TypeScript手册中文版 可选模块加载和其它一些特殊的加载情景 使用其他的JavaScript代码库 模块使用中的一些问题 函数 函数 函数类型 可选参数和默认参数 剩余参数 Lambdas和'this'的使用 重载 泛型 泛型中的Hello World 使用泛型类型变量 泛型类型 泛型类 泛型限定 常见错误 常见错误信息 混合 Mixin的例子 理解这个例子 声明合并 基本概念 合并接口 合并模块 用模块合并类,函数和枚举 不被允许的合并 类型推断 基础 最佳通用类型 上下文类型 类型兼容性 起步 比较两个函数 枚举 类 介紹 6 TypeScript手册中文版 泛型 进阶话题 编写.d.ts文件 指导与细则 例子 TypeScript 1.5 援助 因水平有限,文档中可能会出现各种疏漏,错误。请您发PR或issues来帮助我们改 善文档! 项目地址: https://github.com/oyyd/typescript-handbook-zh 介紹 7 TypeScript手册中文版 基本类型 程序的运行离不开基本的数据类型,如:numbers, strings, structures, boolean 等。TypeScript支持所有你在JavaScript中会用到的数据类型的同时,还添加了便利 的枚举类型(enumeration type)以供使用。 布尔类型 真/假值是最基本的数据类型,这种数据类型在JavaScript和TypeScript中(以及其 他语言)称为布尔类型(boolean)。 var isDone: boolean = false; 数字 同JavaScript一样,TypeScript中数字都是浮点数。这些浮点数都被称作数字类型 (number)。 var height: number = 6; 字符串 文本类型的数据是用JavaScript编写网页和服务器等程序的基础。同其他语言一 样,我们使用字符串(string)来指代这些文本类型的数据。在TypeScript中,你可 以像在JavaScript中那样,使用双引号("")或单引号('')来表示字符串。 var name: string = "bob"; name = 'smith'; 数组 基本类型 8 TypeScript手册中文版 同JavaScript一样,TypeScript中我们也可以使用数组。我们可以使用两种不同的方 式来写数组。第一种是在元素类型后面附上中括号([]),来表示这种类型元素的 数组: var list:number[] = [1, 2, 3]; 第二种方式是使用泛型数组类型,形式如Array: var list:Array<number> = [1, 2, 3]; 枚举 TypeScript拓展了JavaScript原生的标准数据类型集,增加了枚举类型(enum)。 枚举是一种很有用的数据类型,就像C#等语言中一样,它提供了一种给数字类型的 值,设置易于辨别的名字的方法。 enum Color {Red, Green, Blue}; var c: Color = Color.Green; 在默认情况下,枚举类型会从数字0开始标记它的元素。我们可以通过人为地设置 元素的数值来改变默认值。例如,上面的例子我们可以设置成从1开始计数: enum Color {Red = 1, Green, Blue}; var c: Color = Color.Green; 我们甚至可以给所有的枚举元素设置数值: enum Color {Red = 1, Green = 2, Blue = 4}; var c: Color = Color.Green; 枚举类型有一个便捷特性,我们也可以直接用数值来查找其对应的枚举元素的名 称。举例来说,如果我们有一个值为2,但我们不确定这个数值对应枚举类型中的哪 个元素,那我们可以直接查找这个数值对应的名称: 基本类型 9 TypeScript手册中文版 enum Color {Red = 1, Green, Blue}; var colorName: string = Color[2]; alert(colorName); Any 当我们编写应用时,我们可能会需要描述一些类型不明确的变量。因为这些变量的 值可能来源于一些动态的内容,如用户或第三方提供的库。在这种情况下,我们需 要略过对这些变量进行的类型检查,让它们直接通过编译时的检查。为了实现这一 目的,我们可以把它们标识为'any'类型: var notSure: any = 4; notSure = "maybe a string instead"; notSure = false; // okay, definitely a boolean 使用'any'类型是处理我们已有的JavaScript代码的一种强大的方式。我们可以用它 来逐渐增加或减少在编译过程中的类型检查。 当我们知道一个类型的部分数据类型,却又不确定所有的数据类型时,使用'any'可 以为我们提供不少方便。比如你有一个数组,但是这个数组中的元素属于不同的数 据类型,那你可以这么做: var list:any[] = [1, true, "free"]; list[1] = 100; Void 与'any'对应的数据类型是'void',它代表缺省类型。没有返回值的函数就可以认为 是'void'类型: 基本类型 10 TypeScript手册中文版 function warnUser(): void { alert("This is my warning message"); } 基本类型 11 TypeScript手册中文版 接口 TypeScript的核心原则之一,是类型检查会集中关注数据的“结构”(shape)。这一 行为有时被称作“鸭子类型”(duck typing)或“结构子类型化”(structural subtyping)。在TypeScript中,接口起到了为这些数据类型命名的作用,同时接口 也是定义你代码之间的关系,或你的代码和其他项目代码之间关系的有效方法。 我们的第一个接口 让我们来看看下面这个简单的例子,来了解接口是如何工作的: function printLabel(labelledObj: {label: string}) { console.log(labelledObj.label); } var myObj = {size: 10, label: "Size 10 Object"}; printLabel(myObj); 类型检查器会检查'printLabel'的调用。其中'printLabel'方法有一个参数,我们需要 给这个参数传入一个带有名为'label'的字符串类型属性的对象。注意我们传入的这 个对象实际上不只有'label'属性,但编译器只检查那些指定的属性,查看它们的类 型是否相符。 让我们重写上面的例子,这次我们将使用接口来描述参数的需求,即传入的对象要 有字符串类型的label属性。 接口 12 TypeScript手册中文版 interface LabelledValue { label: string; } function printLabel(labelledObj: LabelledValue) { console.log(labelledObj.label); } var myObj = {size: 10, label: "Size 10 Object"}; printLabel(myObj); 我们可以用这个名为'LabelledValue'的接口来描述我们前面例子中的需求。它仍旧 表示需要有一个名为'label'的字符串属性。值得注意的是,与其他编程语言不同, 我们不需要明确地说 传给'printLabel'的对象实现了这个接口。这里只关
typescript-handbook-zh
温馨提示:如果当前文档出现乱码或未能正常浏览,请先下载原文档进行浏览。
本文档由 user 于 2020-12-27 09:01:44上传分享