 TypeScript Handbook(中文版)
误,你仍然可以使用TypeScript。但在这种情况下,TypeScript会警告你代码可能 不会按预期执行。 接口 让我们开发这个示例应用。这里我们使用接口来描述一个拥 有 firstName 和 lastName 字段的对象。 在TypeScript里,只在两个类型内部的 结构兼容那么这两个类型就是兼容的。 这就允许我们在实现接口时候只要保证包含 了接口要求的结构就可以,而不必明确地使用 implements 语句。 document.body.innerHTML = greeter(user); 类 最后,让我们使用类来改写这个例子。 TypeScript支持JavaScript的新特性,比如 支持基于类的面向对象编程。 让我们创建一个 Student 类,它带有一个构造函数和一些公共字段。 注意类和接 口可以一起共作,程序员可以自行决定抽象的级别。 还要注意的是,在构造函数的参数上使用 public greeter(user); 重新运行 tsc greeter.ts ,你会看到生成的JavaScript代码和原先的一样。 TypeScript里的类只是JavaScript里常用的基于原型面向对象编程的简写。 运行TypeScript Web应用 在 greeter.html 里输入如下内容: TypeScript Handbook(中文版)
误,你仍然可以使用TypeScript。但在这种情况下,TypeScript会警告你代码可能 不会按预期执行。 接口 让我们开发这个示例应用。这里我们使用接口来描述一个拥 有 firstName 和 lastName 字段的对象。 在TypeScript里,只在两个类型内部的 结构兼容那么这两个类型就是兼容的。 这就允许我们在实现接口时候只要保证包含 了接口要求的结构就可以,而不必明确地使用 implements 语句。 document.body.innerHTML = greeter(user); 类 最后,让我们使用类来改写这个例子。 TypeScript支持JavaScript的新特性,比如 支持基于类的面向对象编程。 让我们创建一个 Student 类,它带有一个构造函数和一些公共字段。 注意类和接 口可以一起共作,程序员可以自行决定抽象的级别。 还要注意的是,在构造函数的参数上使用 public greeter(user); 重新运行 tsc greeter.ts ,你会看到生成的JavaScript代码和原先的一样。 TypeScript里的类只是JavaScript里常用的基于原型面向对象编程的简写。 运行TypeScript Web应用 在 greeter.html 里输入如下内容:- TypeScript 0 码力 | 557 页 | 7.48 MB | 1 年前3
 TypeScript 4.0 使用手册
document.body.textContent = greeter(user); 最后,让我们使用类来改写这个例子。 TypeScript支持JavaScript的新特性,比如支持基于类的 面向对象编程。 让我们创建一个 Student 类,它带有一个构造函数和一些公共字段。 注意类和接口可以一起共作, 程序员可以自行决定抽象的级别。 还要注意的是,在构造函数的参数上使用 public greeter(user); 重新运行 tsc greeter.ts ,你会看到生成的JavaScript代码和原先的一样。 TypeScript里的 类只是JavaScript里常用的基于原型面向对象编程的简写。 在 greeter.html 里输入如下内容: 1. 2. 3. TypeScript 4.0 使用手册
document.body.textContent = greeter(user); 最后,让我们使用类来改写这个例子。 TypeScript支持JavaScript的新特性,比如支持基于类的 面向对象编程。 让我们创建一个 Student 类,它带有一个构造函数和一些公共字段。 注意类和接口可以一起共作, 程序员可以自行决定抽象的级别。 还要注意的是,在构造函数的参数上使用 public greeter(user); 重新运行 tsc greeter.ts ,你会看到生成的JavaScript代码和原先的一样。 TypeScript里的 类只是JavaScript里常用的基于原型面向对象编程的简写。 在 greeter.html 里输入如下内容: 1. 2. 3.- TypeScript Greeter copy-html 会被首先执行。 我们还修改了 default 任务,让它使用 tsify 插件调用 Browserify,而不是 gulp-typescript 。 方便的是,两者传递相同的参数对象到TypeScript编 Gulp - 42 - 本文档使用 书栈网 · BookStack.CN 构建 译器。 调用 bundle 后,我们使用 source (vinyl-source-stream的别名)把输出文件命名0 码力 | 683 页 | 6.27 MB | 1 年前3
 Hello 算法 1.0.0b5 TypeScript 版Java、C++、Python、Go、JS、TS、C#、Swift、Rust、Dart、Zig 等 语言。 ‧ 鼓励读者在章节讨论区互帮互助、共同进步,提问与评论通常可在两日内得到回复。 0.1.1 读者对象 若您是算法初学者,从未接触过算法,或者已经有一些刷题经验,对数据结构与算法有模糊的认识,在会与 不会之间反复横跳,那么这本书正是为您量身定制! 如果您已经积累一定刷题量,熟悉大部分题型,那么 输入空间:用于存储算法的输入数据。 ‧ 暂存空间:用于存储算法在运行过程中的变量、对象、函数上下文等数据。 ‧ 输出空间:用于存储算法的输出数据。 一般情况下,空间复杂度的统计范围是“暂存空间”加上“输出空间”。 暂存空间可以进一步划分为三个部分。 ‧ 暂存数据:用于保存算法运行过程中的各种常量、变量、对象等。 ‧ 栈帧空间:用于保存调用函数的上下文数据。系统在每次调用函数时都会在栈顶部创建一个栈帧,函数 暂存数据(变量) const node = new Node(0); // 暂存数据(对象) const c = constFunc(); // 栈帧空间(调用函数) return a + b + c; // 输出数据 } 2.4.2 推算方法 空间复杂度的推算方法与时间复杂度大致相同,只需将统计对象从“操作数量”转为“使用空间大小”。 而与时间复杂度不同的是,我们通常只关注最差空间复0 码力 | 378 页 | 30.70 MB | 1 年前3 Hello 算法 1.0.0b5 TypeScript 版Java、C++、Python、Go、JS、TS、C#、Swift、Rust、Dart、Zig 等 语言。 ‧ 鼓励读者在章节讨论区互帮互助、共同进步,提问与评论通常可在两日内得到回复。 0.1.1 读者对象 若您是算法初学者,从未接触过算法,或者已经有一些刷题经验,对数据结构与算法有模糊的认识,在会与 不会之间反复横跳,那么这本书正是为您量身定制! 如果您已经积累一定刷题量,熟悉大部分题型,那么 输入空间:用于存储算法的输入数据。 ‧ 暂存空间:用于存储算法在运行过程中的变量、对象、函数上下文等数据。 ‧ 输出空间:用于存储算法的输出数据。 一般情况下,空间复杂度的统计范围是“暂存空间”加上“输出空间”。 暂存空间可以进一步划分为三个部分。 ‧ 暂存数据:用于保存算法运行过程中的各种常量、变量、对象等。 ‧ 栈帧空间:用于保存调用函数的上下文数据。系统在每次调用函数时都会在栈顶部创建一个栈帧,函数 暂存数据(变量) const node = new Node(0); // 暂存数据(对象) const c = constFunc(); // 栈帧空间(调用函数) return a + b + c; // 输出数据 } 2.4.2 推算方法 空间复杂度的推算方法与时间复杂度大致相同,只需将统计对象从“操作数量”转为“使用空间大小”。 而与时间复杂度不同的是,我们通常只关注最差空间复0 码力 | 378 页 | 30.70 MB | 1 年前3
 Hello 算法 1.1.0 TypeScript版JavaScript、TypeScript、Dart、 Rust、C 和 Zig 等语言。 ‧ 鼓励读者在线上章节评论区互帮互助、共同进步,提问与评论通常可在两日内得到回复。 0.1.1 读者对象 若你是算法初学者,从未接触过算法,或者已经有一些刷题经验,对数据结构与算法有模糊的认识,在会与 不会之间反复横跳,那么本书正是为你量身定制的! 如果你已经积累一定的刷题量,熟悉大部分题型,那 输入空间:用于存储算法的输入数据。 ‧ 暂存空间:用于存储算法在运行过程中的变量、对象、函数上下文等数据。 ‧ 输出空间:用于存储算法的输出数据。 一般情况下,空间复杂度的统计范围是“暂存空间”加上“输出空间”。 暂存空间可以进一步划分为三个部分。 ‧ 暂存数据:用于保存算法运行过程中的各种常量、变量、对象等。 ‧ 栈帧空间:用于保存调用函数的上下文数据。系统在每次调用函数时都会在栈顶部创建一个栈帧,函数 暂存数据(变量) const node = new Node(0); // 暂存数据(对象) const c = constFunc(); // 栈帧空间(调用函数) return a + b + c; // 输出数据 } 2.4.2 推算方法 空间复杂度的推算方法与时间复杂度大致相同,只需将统计对象从“操作数量”转为“使用空间大小”。 而与时间复杂度不同的是,我们通常只关注最差空间复0 码力 | 383 页 | 18.49 MB | 1 年前3 Hello 算法 1.1.0 TypeScript版JavaScript、TypeScript、Dart、 Rust、C 和 Zig 等语言。 ‧ 鼓励读者在线上章节评论区互帮互助、共同进步,提问与评论通常可在两日内得到回复。 0.1.1 读者对象 若你是算法初学者,从未接触过算法,或者已经有一些刷题经验,对数据结构与算法有模糊的认识,在会与 不会之间反复横跳,那么本书正是为你量身定制的! 如果你已经积累一定的刷题量,熟悉大部分题型,那 输入空间:用于存储算法的输入数据。 ‧ 暂存空间:用于存储算法在运行过程中的变量、对象、函数上下文等数据。 ‧ 输出空间:用于存储算法的输出数据。 一般情况下,空间复杂度的统计范围是“暂存空间”加上“输出空间”。 暂存空间可以进一步划分为三个部分。 ‧ 暂存数据:用于保存算法运行过程中的各种常量、变量、对象等。 ‧ 栈帧空间:用于保存调用函数的上下文数据。系统在每次调用函数时都会在栈顶部创建一个栈帧,函数 暂存数据(变量) const node = new Node(0); // 暂存数据(对象) const c = constFunc(); // 栈帧空间(调用函数) return a + b + c; // 输出数据 } 2.4.2 推算方法 空间复杂度的推算方法与时间复杂度大致相同,只需将统计对象从“操作数量”转为“使用空间大小”。 而与时间复杂度不同的是,我们通常只关注最差空间复0 码力 | 383 页 | 18.49 MB | 1 年前3
 Hello 算法 1.2.0 简体中文 TypeScript 版。 ‧ 源代码可一键运行,帮助读者在练习中提升编程技能,了解算法工作原理和数据结构底层实现。 ‧ 提倡读者互助学习,欢迎大家在评论区提出问题与分享见解,在交流讨论中共同进步。 0.1.1 读者对象 若你是算法初学者,从未接触过算法,或者已经有一些刷题经验,对数据结构与算法有模糊的认识,在会与 不会之间反复横跳,那么本书正是为你量身定制的! 如果你已经积累一定的刷题量,熟悉大部分题型,那 输入空间:用于存储算法的输入数据。 ‧ 暂存空间:用于存储算法在运行过程中的变量、对象、函数上下文等数据。 ‧ 输出空间:用于存储算法的输出数据。 一般情况下,空间复杂度的统计范围是“暂存空间”加上“输出空间”。 暂存空间可以进一步划分为三个部分。 ‧ 暂存数据:用于保存算法运行过程中的各种常量、变量、对象等。 ‧ 栈帧空间:用于保存调用函数的上下文数据。系统在每次调用函数时都会在栈顶部创建一个栈帧,函数 暂存数据(变量) const node = new Node(0); // 暂存数据(对象) const c = constFunc(); // 栈帧空间(调用函数) return a + b + c; // 输出数据 } 2.4.2 推算方法 空间复杂度的推算方法与时间复杂度大致相同,只需将统计对象从“操作数量”转为“使用空间大小”。 而与时间复杂度不同的是,我们通常只关注最差空间复0 码力 | 383 页 | 18.49 MB | 10 月前3 Hello 算法 1.2.0 简体中文 TypeScript 版。 ‧ 源代码可一键运行,帮助读者在练习中提升编程技能,了解算法工作原理和数据结构底层实现。 ‧ 提倡读者互助学习,欢迎大家在评论区提出问题与分享见解,在交流讨论中共同进步。 0.1.1 读者对象 若你是算法初学者,从未接触过算法,或者已经有一些刷题经验,对数据结构与算法有模糊的认识,在会与 不会之间反复横跳,那么本书正是为你量身定制的! 如果你已经积累一定的刷题量,熟悉大部分题型,那 输入空间:用于存储算法的输入数据。 ‧ 暂存空间:用于存储算法在运行过程中的变量、对象、函数上下文等数据。 ‧ 输出空间:用于存储算法的输出数据。 一般情况下,空间复杂度的统计范围是“暂存空间”加上“输出空间”。 暂存空间可以进一步划分为三个部分。 ‧ 暂存数据:用于保存算法运行过程中的各种常量、变量、对象等。 ‧ 栈帧空间:用于保存调用函数的上下文数据。系统在每次调用函数时都会在栈顶部创建一个栈帧,函数 暂存数据(变量) const node = new Node(0); // 暂存数据(对象) const c = constFunc(); // 栈帧空间(调用函数) return a + b + c; // 输出数据 } 2.4.2 推算方法 空间复杂度的推算方法与时间复杂度大致相同,只需将统计对象从“操作数量”转为“使用空间大小”。 而与时间复杂度不同的是,我们通常只关注最差空间复0 码力 | 383 页 | 18.49 MB | 10 月前3
 TypeScript 多场景设计方案及应用实践
this.userManager.get(id); } } 关键字 TS 请求 A类 B类 C类 α对象 β对象 Ω对象 TS 请求 A类 B类 C类 α对象 β对象 Ω对象 IoC容器器 TS 请求 A类 B类 C类 α对象 β对象 Ω对象 IoC容器器 TS 解决体验问题 尝试让⽤用户体感⼀一致,不不再考虑写法 服务层写法⼀一致,体验⼀一致 TS0 码力 | 95 页 | 8.28 MB | 1 年前3 TypeScript 多场景设计方案及应用实践
this.userManager.get(id); } } 关键字 TS 请求 A类 B类 C类 α对象 β对象 Ω对象 TS 请求 A类 B类 C类 α对象 β对象 Ω对象 IoC容器器 TS 请求 A类 B类 C类 α对象 β对象 Ω对象 IoC容器器 TS 解决体验问题 尝试让⽤用户体感⼀一致,不不再考虑写法 服务层写法⼀一致,体验⼀一致 TS0 码力 | 95 页 | 8.28 MB | 1 年前3
 Hello 算法 1.0.0b1 TypeScript 版Java, C++, Python, Go, JS, TS, C#, Swift, Zig 等语言; ‧ 鼓励读者在章节讨论区互帮互助、共同进步,提问与评论一般能在两日内得到回复; 0.1.1. 读者对象 如果您是「算法初学者」,完全没有接触过算法,或者已经有少量刷题,对数据结构与算法有朦胧的理解,在 会与不会之间反复横跳,那么这本书就是为你而写! 如果您是「算法老手」,已经积累一定刷题量,接 : ‧「输入空间」用于存储算法的输入数据; ‧「暂存空间」用于存储算法运行中的变量、对象、函数上下文等数据; ‧「输出空间」用于存储算法的输出数据; � 通常情况下,空间复杂度统计范围是「暂存空间」+「输出空间」。 暂存空间可分为三个部分: ‧「暂存数据」用于保存算法运行中的各种 常量、变量、对象 等。 ‧「栈帧空间」用于保存调用函数的上下文数据。系统每次调用函数都会在栈的顶部创建一个栈帧,函数返 number { // 输入数据 const a = 0; // 暂存数据(常量) const b = 0; // 暂存数据(变量) const node = new Node(0); // 暂存数据(对象) const c = constFunc(); // 栈帧空间(调用函数) return a + b + c; // 输出数据 } 2.3.2. 推算方法 空间复杂度的推算方法和时间复杂0 码力 | 186 页 | 14.71 MB | 1 年前3 Hello 算法 1.0.0b1 TypeScript 版Java, C++, Python, Go, JS, TS, C#, Swift, Zig 等语言; ‧ 鼓励读者在章节讨论区互帮互助、共同进步,提问与评论一般能在两日内得到回复; 0.1.1. 读者对象 如果您是「算法初学者」,完全没有接触过算法,或者已经有少量刷题,对数据结构与算法有朦胧的理解,在 会与不会之间反复横跳,那么这本书就是为你而写! 如果您是「算法老手」,已经积累一定刷题量,接 : ‧「输入空间」用于存储算法的输入数据; ‧「暂存空间」用于存储算法运行中的变量、对象、函数上下文等数据; ‧「输出空间」用于存储算法的输出数据; � 通常情况下,空间复杂度统计范围是「暂存空间」+「输出空间」。 暂存空间可分为三个部分: ‧「暂存数据」用于保存算法运行中的各种 常量、变量、对象 等。 ‧「栈帧空间」用于保存调用函数的上下文数据。系统每次调用函数都会在栈的顶部创建一个栈帧,函数返 number { // 输入数据 const a = 0; // 暂存数据(常量) const b = 0; // 暂存数据(变量) const node = new Node(0); // 暂存数据(对象) const c = constFunc(); // 栈帧空间(调用函数) return a + b + c; // 输出数据 } 2.3.2. 推算方法 空间复杂度的推算方法和时间复杂0 码力 | 186 页 | 14.71 MB | 1 年前3
 Hello 算法 1.2.0 繁体中文 TypeScript 版// 直接走訪陣列元素 for (const num of nums) { count += num; } } 6. 查詢元素 在陣列中查詢指定元素需要走訪陣列,每輪判斷元素值是否匹配,若匹配則輸出對應索引。 因為陣列是線性資料結構,所以上述查詢操作被稱為“線性查詢”。 // === File: array.ts === /* 在陣列中查詢指定元素 */ function find(nums: 存密碼的雜 湊值。當用戶輸入密碼時,系統會對輸入的密碼計算雜湊值,然後與儲存的雜湊值進行比較。如果兩者 匹配,那麼密碼就被視為正確。 ‧ 資料完整性檢查:資料傳送方可以計算資料的雜湊值並將其一同傳送;接收方可以重新計算接收到的 資料的雜湊值,並與接收到的雜湊值進行比較。如果兩者匹配,那麼資料就被視為完整。 對於密碼學的相關應用,為了防止從雜湊值推導出原始密碼等逆向工程,雜湊演算法需要具備更高等級的安 被新元素使用。這樣做既能保持雜湊表的探測序列不變,又能保證雜湊表的空間使用率。 Q:為什麼線上性探查中,查詢元素的時候會出現雜湊衝突呢? 查詢的時候透過雜湊函式找到對應的桶和鍵值對,發現 key 不匹配,這就代表有雜湊衝突。因此,線性探查 法會根據預先設定的步長依次向下查詢,直至找到正確的鍵值對或無法找到跳出為止。 Q:為什麼雜湊表擴容能夠緩解雜湊衝突? 第 6 章 雜湊表 www.hello‑algo0 码力 | 384 页 | 18.80 MB | 10 月前3 Hello 算法 1.2.0 繁体中文 TypeScript 版// 直接走訪陣列元素 for (const num of nums) { count += num; } } 6. 查詢元素 在陣列中查詢指定元素需要走訪陣列,每輪判斷元素值是否匹配,若匹配則輸出對應索引。 因為陣列是線性資料結構,所以上述查詢操作被稱為“線性查詢”。 // === File: array.ts === /* 在陣列中查詢指定元素 */ function find(nums: 存密碼的雜 湊值。當用戶輸入密碼時,系統會對輸入的密碼計算雜湊值,然後與儲存的雜湊值進行比較。如果兩者 匹配,那麼密碼就被視為正確。 ‧ 資料完整性檢查:資料傳送方可以計算資料的雜湊值並將其一同傳送;接收方可以重新計算接收到的 資料的雜湊值,並與接收到的雜湊值進行比較。如果兩者匹配,那麼資料就被視為完整。 對於密碼學的相關應用,為了防止從雜湊值推導出原始密碼等逆向工程,雜湊演算法需要具備更高等級的安 被新元素使用。這樣做既能保持雜湊表的探測序列不變,又能保證雜湊表的空間使用率。 Q:為什麼線上性探查中,查詢元素的時候會出現雜湊衝突呢? 查詢的時候透過雜湊函式找到對應的桶和鍵值對,發現 key 不匹配,這就代表有雜湊衝突。因此,線性探查 法會根據預先設定的步長依次向下查詢,直至找到正確的鍵值對或無法找到跳出為止。 Q:為什麼雜湊表擴容能夠緩解雜湊衝突? 第 6 章 雜湊表 www.hello‑algo0 码力 | 384 页 | 18.80 MB | 10 月前3
共 8 条
- 1













