 TypeScript 4.0 使用手册
BookStack.CN 构建 致谢 当前文档 《TypeScript 4.0 使用手册》 由 进击的皇虫 使用 书栈网(BookStack.CN) 进 行构建,生成于 2020-09-09。 书栈网仅提供文档编写、整理、归类等功能,以及对文档内容的生成和导出工具。 文档内容由网友们编写和整理,书栈网难以确认文档内容知识点是否错漏。如果您在阅读文档获取 知识的时候,发现文档内容有不恰当的地方,请向我们 ,让我们共同携手,将知识准确、高效且有 效地传递给每一个人。 同时,如果您在日常工作、生活和学习中遇到有价值有营养的知识文档,欢迎分享到书栈网,为知 识的传承献上您的一份力量! 如果当前文档生成时间太久,请到书栈网获取最新的文档,以跟上知识更新换代的步伐。 内容来源:zhongsp https://github.com/zhongsp/TypeScript 文档地址:http://www Student("Jane", "M.", "User"); 18. 19. document.body.textContent = greeter(user); 重新运行 tsc greeter.ts ,你会看到生成的JavaScript代码和原先的一样。 TypeScript里的 类只是JavaScript里常用的基于原型面向对象编程的简写。 在 greeter.html 里输入如下内容: 1.0 码力 | 683 页 | 6.27 MB | 1 年前3 TypeScript 4.0 使用手册
BookStack.CN 构建 致谢 当前文档 《TypeScript 4.0 使用手册》 由 进击的皇虫 使用 书栈网(BookStack.CN) 进 行构建,生成于 2020-09-09。 书栈网仅提供文档编写、整理、归类等功能,以及对文档内容的生成和导出工具。 文档内容由网友们编写和整理,书栈网难以确认文档内容知识点是否错漏。如果您在阅读文档获取 知识的时候,发现文档内容有不恰当的地方,请向我们 ,让我们共同携手,将知识准确、高效且有 效地传递给每一个人。 同时,如果您在日常工作、生活和学习中遇到有价值有营养的知识文档,欢迎分享到书栈网,为知 识的传承献上您的一份力量! 如果当前文档生成时间太久,请到书栈网获取最新的文档,以跟上知识更新换代的步伐。 内容来源:zhongsp https://github.com/zhongsp/TypeScript 文档地址:http://www Student("Jane", "M.", "User"); 18. 19. document.body.textContent = greeter(user); 重新运行 tsc greeter.ts ,你会看到生成的JavaScript代码和原先的一样。 TypeScript里的 类只是JavaScript里常用的基于原型面向对象编程的简写。 在 greeter.html 里输入如下内容: 1.0 码力 | 683 页 | 6.27 MB | 1 年前3 TypeScript Handbook(中文版)
Student("Jane", "M.", "User"); document.body.innerHTML = greeter(user); 重新运行 tsc greeter.ts ,你会看到生成的JavaScript代码和原先的一样。 TypeScript里的类只是JavaScript里常用的基于原型面向对象编程的简写。 运行TypeScript Web应用 在 greeter.html 文件夹下,经过TypeScript编译器编译生成的目标文件放 在 dist 目录下。 下面让我们来创建这些文件夹: mkdir src mkdir dist 初始化工程 现在让我们把这个文件夹转换成npm包: npm init 你将看到有一些提示操作。 除了入口文件外,其余的都可以使用默认项。 入口文 件使用 ./dist/main.js 。 你可以随时在 package.json 文件里更改生成的配 置。 } 确保执行 gulp 后模块是能工作的,在Node.js下进行测试: gulp node dist/main.js 注意,即使我们使用了ES2015的模块语法,TypeScript还是会生成Node.js使用的 CommonJS模块。 我们在这个教程里会一直使用CommonJS模块,但是你可以通 过修改 module 选项来改变这个行为。 Browserify 现在,让我们把这个工程由Node0 码力 | 557 页 | 7.48 MB | 1 年前3 TypeScript Handbook(中文版)
Student("Jane", "M.", "User"); document.body.innerHTML = greeter(user); 重新运行 tsc greeter.ts ,你会看到生成的JavaScript代码和原先的一样。 TypeScript里的类只是JavaScript里常用的基于原型面向对象编程的简写。 运行TypeScript Web应用 在 greeter.html 文件夹下,经过TypeScript编译器编译生成的目标文件放 在 dist 目录下。 下面让我们来创建这些文件夹: mkdir src mkdir dist 初始化工程 现在让我们把这个文件夹转换成npm包: npm init 你将看到有一些提示操作。 除了入口文件外,其余的都可以使用默认项。 入口文 件使用 ./dist/main.js 。 你可以随时在 package.json 文件里更改生成的配 置。 } 确保执行 gulp 后模块是能工作的,在Node.js下进行测试: gulp node dist/main.js 注意,即使我们使用了ES2015的模块语法,TypeScript还是会生成Node.js使用的 CommonJS模块。 我们在这个教程里会一直使用CommonJS模块,但是你可以通 过修改 module 选项来改变这个行为。 Browserify 现在,让我们把这个工程由Node0 码力 | 557 页 | 7.48 MB | 1 年前3 Hello 算法 1.2.0 简体中文 TypeScript 版hello‑algo.com 3 图 0‑1 本书主要内容 0.1.3 致谢 本书在开源社区众多贡献者的共同努力下不断完善。感谢每一位投入时间与精力的撰稿人,他们是(按照 GitHub 自动生成的顺序):krahets、coderonion、Gonglja、nuomi1、Reanon、justin‑tse、hpstory、 danielsss、curtishd、night‑cruise、 linearLogRecur(n / 2); for (let i = 0; i < n; i++) { count++; } return count; } 图 2‑13 展示了线性对数阶的生成方式。二叉树的每一层的操作总数都为 ? ,树共有 log2 ? + 1 层,因此时 间复杂度为 ?(? log ?) 。 第 2 章 复杂度分析 www.hello‑algo.com 39 图 File: worst_best_time_complexity.ts === /* 生成一个数组,元素为 { 1, 2, ..., n },顺序被打乱 */ function randomNumbers(n: number): number[] { const nums = Array(n); // 生成数组 nums = { 1, 2, 3, ..., n } for (let i =0 码力 | 383 页 | 18.49 MB | 10 月前3 Hello 算法 1.2.0 简体中文 TypeScript 版hello‑algo.com 3 图 0‑1 本书主要内容 0.1.3 致谢 本书在开源社区众多贡献者的共同努力下不断完善。感谢每一位投入时间与精力的撰稿人,他们是(按照 GitHub 自动生成的顺序):krahets、coderonion、Gonglja、nuomi1、Reanon、justin‑tse、hpstory、 danielsss、curtishd、night‑cruise、 linearLogRecur(n / 2); for (let i = 0; i < n; i++) { count++; } return count; } 图 2‑13 展示了线性对数阶的生成方式。二叉树的每一层的操作总数都为 ? ,树共有 log2 ? + 1 层,因此时 间复杂度为 ?(? log ?) 。 第 2 章 复杂度分析 www.hello‑algo.com 39 图 File: worst_best_time_complexity.ts === /* 生成一个数组,元素为 { 1, 2, ..., n },顺序被打乱 */ function randomNumbers(n: number): number[] { const nums = Array(n); // 生成数组 nums = { 1, 2, 3, ..., n } for (let i =0 码力 | 383 页 | 18.49 MB | 10 月前3 Hello 算法 1.1.0 TypeScript版hello‑algo.com 3 图 0‑1 本书主要内容 0.1.3 致谢 本书在开源社区众多贡献者的共同努力下不断完善。感谢每一位投入时间与精力的撰稿人,他们是(按照 GitHub 自动生成的顺序):krahets、Gonglja、nuomi1、codingonion、Reanon、justin‑tse、hpstory、 danielsss、curtishd、night‑cruise linearLogRecur(n / 2); for (let i = 0; i < n; i++) { count++; } return count; } 图 2‑13 展示了线性对数阶的生成方式。二叉树的每一层的操作总数都为 ? ,树共有 log2 ? + 1 层,因此时 间复杂度为 ?(? log ?) 。 第 2 章 复杂度分析 hello‑algo.com 39 图 2‑13 File: worst_best_time_complexity.ts === /* 生成一个数组,元素为 { 1, 2, ..., n },顺序被打乱 */ function randomNumbers(n: number): number[] { const nums = Array(n); // 生成数组 nums = { 1, 2, 3, ..., n } for (let i =0 码力 | 383 页 | 18.49 MB | 1 年前3 Hello 算法 1.1.0 TypeScript版hello‑algo.com 3 图 0‑1 本书主要内容 0.1.3 致谢 本书在开源社区众多贡献者的共同努力下不断完善。感谢每一位投入时间与精力的撰稿人,他们是(按照 GitHub 自动生成的顺序):krahets、Gonglja、nuomi1、codingonion、Reanon、justin‑tse、hpstory、 danielsss、curtishd、night‑cruise linearLogRecur(n / 2); for (let i = 0; i < n; i++) { count++; } return count; } 图 2‑13 展示了线性对数阶的生成方式。二叉树的每一层的操作总数都为 ? ,树共有 log2 ? + 1 层,因此时 间复杂度为 ?(? log ?) 。 第 2 章 复杂度分析 hello‑algo.com 39 图 2‑13 File: worst_best_time_complexity.ts === /* 生成一个数组,元素为 { 1, 2, ..., n },顺序被打乱 */ function randomNumbers(n: number): number[] { const nums = Array(n); // 生成数组 nums = { 1, 2, 3, ..., n } for (let i =0 码力 | 383 页 | 18.49 MB | 1 年前3 Hello 算法 1.0.0b5 TypeScript 版算法》,学起来应该会简单 10 倍!” ——李沐,亚马逊资深首席科学家 致谢 本书在开源社区众多贡献者的共同努力下不断成长。感谢每一位投入时间与精力的撰稿人,他们是 (按照 GitHub 自动生成的顺序):krahets, justin‑tse, sjinzh, nuomi1, Reanon, Gonglja, S‑N‑O‑R‑ L‑A‑X, hpstory, danielsss, RiverTwilight linearLogRecur(n / 2); for (let i = 0; i < n; i++) { count++; } return count; } 图 2‑13 展示了线性对数阶的生成方式。二叉树的每一层的操作总数都为 ? ,树共有 log2 ? + 1 层,因此时 间复杂度为 ?(? log ?) 。 图 2‑13 线性对数阶的时间复杂度 主流排序算法的时间复杂度通常为 File: worst_best_time_complexity.ts === /* 生成一个数组,元素为 { 1, 2, ..., n },顺序被打乱 */ function randomNumbers(n: number): number[] { const nums = Array(n); // 生成数组 nums = { 1, 2, 3, ..., n } for (let i =0 码力 | 378 页 | 30.70 MB | 1 年前3 Hello 算法 1.0.0b5 TypeScript 版算法》,学起来应该会简单 10 倍!” ——李沐,亚马逊资深首席科学家 致谢 本书在开源社区众多贡献者的共同努力下不断成长。感谢每一位投入时间与精力的撰稿人,他们是 (按照 GitHub 自动生成的顺序):krahets, justin‑tse, sjinzh, nuomi1, Reanon, Gonglja, S‑N‑O‑R‑ L‑A‑X, hpstory, danielsss, RiverTwilight linearLogRecur(n / 2); for (let i = 0; i < n; i++) { count++; } return count; } 图 2‑13 展示了线性对数阶的生成方式。二叉树的每一层的操作总数都为 ? ,树共有 log2 ? + 1 层,因此时 间复杂度为 ?(? log ?) 。 图 2‑13 线性对数阶的时间复杂度 主流排序算法的时间复杂度通常为 File: worst_best_time_complexity.ts === /* 生成一个数组,元素为 { 1, 2, ..., n },顺序被打乱 */ function randomNumbers(n: number): number[] { const nums = Array(n); // 生成数组 nums = { 1, 2, 3, ..., n } for (let i =0 码力 | 378 页 | 30.70 MB | 1 年前3 Hello 算法 1.2.0 繁体中文 TypeScript 版hello‑algo.com 3 圖 0‑1 本書主要內容 0.1.3 致謝 本書在開源社群眾多貢獻者的共同努力下不斷完善。感謝每一位投入時間與精力的撰稿人,他們是(按照 GitHub 自動生成的順序):krahets、coderonion、Gonglja、nuomi1、Reanon、justin‑tse、hpstory、 danielsss、curtishd、night‑cruise、 linearLogRecur(n / 2); for (let i = 0; i < n; i++) { count++; } return count; } 圖 2‑13 展示了線性對數階的生成方式。二元樹的每一層的操作總數都為 ? ,樹共有 log2 ? + 1 層,因此時 間複雜度為 ?(? log ?) 。 第 2 章 複雜度分析 www.hello‑algo.com 39 圖 File: worst_best_time_complexity.ts === /* 生成一個陣列,元素為 { 1, 2, ..., n },順序被打亂 */ function randomNumbers(n: number): number[] { const nums = Array(n); // 生成陣列 nums = { 1, 2, 3, ..., n } for (let i =0 码力 | 384 页 | 18.80 MB | 10 月前3 Hello 算法 1.2.0 繁体中文 TypeScript 版hello‑algo.com 3 圖 0‑1 本書主要內容 0.1.3 致謝 本書在開源社群眾多貢獻者的共同努力下不斷完善。感謝每一位投入時間與精力的撰稿人,他們是(按照 GitHub 自動生成的順序):krahets、coderonion、Gonglja、nuomi1、Reanon、justin‑tse、hpstory、 danielsss、curtishd、night‑cruise、 linearLogRecur(n / 2); for (let i = 0; i < n; i++) { count++; } return count; } 圖 2‑13 展示了線性對數階的生成方式。二元樹的每一層的操作總數都為 ? ,樹共有 log2 ? + 1 層,因此時 間複雜度為 ?(? log ?) 。 第 2 章 複雜度分析 www.hello‑algo.com 39 圖 File: worst_best_time_complexity.ts === /* 生成一個陣列,元素為 { 1, 2, ..., n },順序被打亂 */ function randomNumbers(n: number): number[] { const nums = Array(n); // 生成陣列 nums = { 1, 2, 3, ..., n } for (let i =0 码力 | 384 页 | 18.80 MB | 10 月前3 Hello 算法 1.0.0b1 TypeScript 版效果有限,可前往 hello‑algo.com 网页版获得更好的阅读体验。 致谢 本书在开源社区的群策群力下逐步成长,感谢每一位撰稿人,是他们的无私奉献让这本书变得更好,他 们是(按照 GitHub 自动生成的顺序):krahets, justin‑tse, sjinzh, Reanon, nuomi1, Gonglja, S‑N‑ O‑R‑L‑A‑X, danielsss, RiverTwilight File: worst_best_time_complexity.ts === /* 生成一个数组,元素为 { 1, 2, ..., n },顺序被打乱 */ function randomNumbers(n: number): number[] { const nums = Array(n); // 生成数组 nums = { 1, 2, 3, ..., n } for (let i = (nums[i] === target) { return i; } } return -1; } 4.1.4. 数组典型应用 随机访问。如果我们想要随机抽取一些样本,那么可以用数组存储,并生成一个随机序列,根据索引实现样本 的随机抽取。 二分查找。例如前文查字典的例子,我们可以将字典中的所有字按照拼音顺序存储在数组中,然后使用与日常 查纸质字典相同的“翻开中间,排除一半”的方式,来实现一个查电子字典的算法。0 码力 | 186 页 | 14.71 MB | 1 年前3 Hello 算法 1.0.0b1 TypeScript 版效果有限,可前往 hello‑algo.com 网页版获得更好的阅读体验。 致谢 本书在开源社区的群策群力下逐步成长,感谢每一位撰稿人,是他们的无私奉献让这本书变得更好,他 们是(按照 GitHub 自动生成的顺序):krahets, justin‑tse, sjinzh, Reanon, nuomi1, Gonglja, S‑N‑ O‑R‑L‑A‑X, danielsss, RiverTwilight File: worst_best_time_complexity.ts === /* 生成一个数组,元素为 { 1, 2, ..., n },顺序被打乱 */ function randomNumbers(n: number): number[] { const nums = Array(n); // 生成数组 nums = { 1, 2, 3, ..., n } for (let i = (nums[i] === target) { return i; } } return -1; } 4.1.4. 数组典型应用 随机访问。如果我们想要随机抽取一些样本,那么可以用数组存储,并生成一个随机序列,根据索引实现样本 的随机抽取。 二分查找。例如前文查字典的例子,我们可以将字典中的所有字按照拼音顺序存储在数组中,然后使用与日常 查纸质字典相同的“翻开中间,排除一半”的方式,来实现一个查电子字典的算法。0 码力 | 186 页 | 14.71 MB | 1 年前3 Programming TypeScript5. AST => 字节码 6. 运行时计算字节码 在这个过程中,第1-2 步骤中使用程序的类型,第三步不使用。就是说 TS TS 编译成 JS 时,不会考 类型。 这意味着,程序中的类型对程序生成的输出没有任何影响,类型只在类型检查这一步使用。 类型系统 ● 一般的有两种类型系统 1. 通过显示句法告诉编译器所有值的类型(注解) 2. 自动推导类型 ● TS 身兼两种类型系统 //0 码力 | 3 页 | 202.08 KB | 1 年前3 Programming TypeScript5. AST => 字节码 6. 运行时计算字节码 在这个过程中,第1-2 步骤中使用程序的类型,第三步不使用。就是说 TS TS 编译成 JS 时,不会考 类型。 这意味着,程序中的类型对程序生成的输出没有任何影响,类型只在类型检查这一步使用。 类型系统 ● 一般的有两种类型系统 1. 通过显示句法告诉编译器所有值的类型(注解) 2. 自动推导类型 ● TS 身兼两种类型系统 //0 码力 | 3 页 | 202.08 KB | 1 年前3
共 8 条
- 1













