 TypeScript Handbook(中文版)
理想情况下,我们只需要在浏览器里引入React模块,但是大部分浏览器还没有支 持模块。 因此大部分代码库会把自己包裹在一个单独的全局变量内,比 如: jQuery 或 _ 。 这叫做“命名空间”模式,webpack也允许我们继续使用通过 这种方式写的代码库。 通过我们的设置 "react": "React" ,webpack会神奇地 将所有对 "react" 的导入转换成从 React ,它会发布一条明确 的action消息,这个消息必须被reducer函数处理。 由于使用了这样明确的方式,很 容易弄清楚一个action是如何影响程序的state。 MobX借助于函数式响应型模式,state被包装在了可观察对象里,并通过props传 递。 通过将state标记为可观察的,即可在所有观察者之间保持state的同步性。 另 一个好处是,这个库已经使用TypeScript实现了。 DECREMENT_ENTHUSIASM = typeof DECREMENT_ENTHUSIASM; TypeScript Handbook(中文版) 79 React 这里的 const / type 模式允许我们以容易访问和重构的方式使用TypeScript的字 符串字面量类型。 接下来,我们创建一些actions以及创建这些actions的函 数, src/actions/index.tsx0 码力 | 557 页 | 7.48 MB | 1 年前3 TypeScript Handbook(中文版)
理想情况下,我们只需要在浏览器里引入React模块,但是大部分浏览器还没有支 持模块。 因此大部分代码库会把自己包裹在一个单独的全局变量内,比 如: jQuery 或 _ 。 这叫做“命名空间”模式,webpack也允许我们继续使用通过 这种方式写的代码库。 通过我们的设置 "react": "React" ,webpack会神奇地 将所有对 "react" 的导入转换成从 React ,它会发布一条明确 的action消息,这个消息必须被reducer函数处理。 由于使用了这样明确的方式,很 容易弄清楚一个action是如何影响程序的state。 MobX借助于函数式响应型模式,state被包装在了可观察对象里,并通过props传 递。 通过将state标记为可观察的,即可在所有观察者之间保持state的同步性。 另 一个好处是,这个库已经使用TypeScript实现了。 DECREMENT_ENTHUSIASM = typeof DECREMENT_ENTHUSIASM; TypeScript Handbook(中文版) 79 React 这里的 const / type 模式允许我们以容易访问和重构的方式使用TypeScript的字 符串字面量类型。 接下来,我们创建一些actions以及创建这些actions的函 数, src/actions/index.tsx0 码力 | 557 页 | 7.48 MB | 1 年前3
 TypeScript 4.0 使用手册
,它会发布一条明确的action消息,这个消息必须被 reducer函数处理。 由于使用了这样明确的方式,很容易弄清楚一个action是如何影响程序的 state。 MobX借助于函数式响应型模式,state被包装在了可观察对象里,并通过props传递。 通过将state 标记为可观察的,即可在所有观察者之间保持state的同步性。 另一个好处是,这个库已经使用 TypeScript实现了。 'DECREMENT_ENTHUSIASM'; 8. export type DECREMENT_ENTHUSIASM = typeof DECREMENT_ENTHUSIASM; 这里的 const / type 模式允许我们以容易访问和重构的方式使用TypeScript的字符串字面量类 型。 接下来,我们创建一些actions以及创建这些actions的函数, src/actions/index.tsx 。 BookStack.CN 构建 那么你可以这样写: 1. export function feedPets(pets) { 2. // ... 3. } 有时你会完全重写导出对象。 这是一个常见模式,这会将模块变为可立即调用的模块: 1. var express = require("express"); 2. var app = express(); 之前你可以是这样写的: 1. function0 码力 | 683 页 | 6.27 MB | 1 年前3 TypeScript 4.0 使用手册
,它会发布一条明确的action消息,这个消息必须被 reducer函数处理。 由于使用了这样明确的方式,很容易弄清楚一个action是如何影响程序的 state。 MobX借助于函数式响应型模式,state被包装在了可观察对象里,并通过props传递。 通过将state 标记为可观察的,即可在所有观察者之间保持state的同步性。 另一个好处是,这个库已经使用 TypeScript实现了。 'DECREMENT_ENTHUSIASM'; 8. export type DECREMENT_ENTHUSIASM = typeof DECREMENT_ENTHUSIASM; 这里的 const / type 模式允许我们以容易访问和重构的方式使用TypeScript的字符串字面量类 型。 接下来,我们创建一些actions以及创建这些actions的函数, src/actions/index.tsx 。 BookStack.CN 构建 那么你可以这样写: 1. export function feedPets(pets) { 2. // ... 3. } 有时你会完全重写导出对象。 这是一个常见模式,这会将模块变为可立即调用的模块: 1. var express = require("express"); 2. var app = express(); 之前你可以是这样写的: 1. function0 码力 | 683 页 | 6.27 MB | 1 年前3
 Hello 算法 1.1.0 TypeScript版// 直接遍历数组元素 for (const num of nums) { count += num; } } 6. 查找元素 在数组中查找指定元素需要遍历数组,每轮判断元素值是否匹配,若匹配则输出对应索引。 因为数组是线性数据结构,所以上述查找操作被称为“线性查找”。 // === File: array.ts === /* 在数组中查找指定元素 */ function find(nums: com 86 ‧ 缓存行:缓存不是单个字节地存储与加载数据,而是以缓存行为单位。相比于单个字节的传输,缓存行 的传输形式更加高效。 ‧ 预取机制:处理器会尝试预测数据访问模式(例如顺序访问、固定步长跳跃访问等),并根据特定模式 将数据加载至缓存之中,从而提升命中率。 ‧ 空间局部性:如果一个数据被访问,那么它附近的数据可能近期也会被访问。因此,缓存在加载某一数 据时,也会加载其附近的数据,以提高命中率。 占用空间:链表元素比数组元素占用空间更多,导致缓存中容纳的有效数据量更少。 ‧ 缓存行:链表数据分散在内存各处,而缓存是“按行加载”的,因此加载到无效数据的比例更高。 ‧ 预取机制:数组比链表的数据访问模式更具“可预测性”,即系统更容易猜出即将被加载的数据。 ‧ 空间局部性:数组被存储在集中的内存空间中,因此被加载数据附近的数据更有可能即将被访问。 总体而言,数组具有更高的缓存命中率,因此它在操作0 码力 | 383 页 | 18.49 MB | 1 年前3 Hello 算法 1.1.0 TypeScript版// 直接遍历数组元素 for (const num of nums) { count += num; } } 6. 查找元素 在数组中查找指定元素需要遍历数组,每轮判断元素值是否匹配,若匹配则输出对应索引。 因为数组是线性数据结构,所以上述查找操作被称为“线性查找”。 // === File: array.ts === /* 在数组中查找指定元素 */ function find(nums: com 86 ‧ 缓存行:缓存不是单个字节地存储与加载数据,而是以缓存行为单位。相比于单个字节的传输,缓存行 的传输形式更加高效。 ‧ 预取机制:处理器会尝试预测数据访问模式(例如顺序访问、固定步长跳跃访问等),并根据特定模式 将数据加载至缓存之中,从而提升命中率。 ‧ 空间局部性:如果一个数据被访问,那么它附近的数据可能近期也会被访问。因此,缓存在加载某一数 据时,也会加载其附近的数据,以提高命中率。 占用空间:链表元素比数组元素占用空间更多,导致缓存中容纳的有效数据量更少。 ‧ 缓存行:链表数据分散在内存各处,而缓存是“按行加载”的,因此加载到无效数据的比例更高。 ‧ 预取机制:数组比链表的数据访问模式更具“可预测性”,即系统更容易猜出即将被加载的数据。 ‧ 空间局部性:数组被存储在集中的内存空间中,因此被加载数据附近的数据更有可能即将被访问。 总体而言,数组具有更高的缓存命中率,因此它在操作0 码力 | 383 页 | 18.49 MB | 1 年前3
 Hello 算法 1.2.0 简体中文 TypeScript 版// 直接遍历数组元素 for (const num of nums) { count += num; } } 6. 查找元素 在数组中查找指定元素需要遍历数组,每轮判断元素值是否匹配,若匹配则输出对应索引。 因为数组是线性数据结构,所以上述查找操作被称为“线性查找”。 // === File: array.ts === /* 在数组中查找指定元素 */ function find(nums: com 86 ‧ 缓存行:缓存不是单个字节地存储与加载数据,而是以缓存行为单位。相比于单个字节的传输,缓存行 的传输形式更加高效。 ‧ 预取机制:处理器会尝试预测数据访问模式(例如顺序访问、固定步长跳跃访问等),并根据特定模式 将数据加载至缓存之中,从而提升命中率。 ‧ 空间局部性:如果一个数据被访问,那么它附近的数据可能近期也会被访问。因此,缓存在加载某一数 据时,也会加载其附近的数据,以提高命中率。 占用空间:链表元素比数组元素占用空间更多,导致缓存中容纳的有效数据量更少。 ‧ 缓存行:链表数据分散在内存各处,而缓存是“按行加载”的,因此加载到无效数据的比例更高。 ‧ 预取机制:数组比链表的数据访问模式更具“可预测性”,即系统更容易猜出即将被加载的数据。 ‧ 空间局部性:数组被存储在集中的内存空间中,因此被加载数据附近的数据更有可能即将被访问。 总体而言,数组具有更高的缓存命中率,因此它在操作0 码力 | 383 页 | 18.49 MB | 10 月前3 Hello 算法 1.2.0 简体中文 TypeScript 版// 直接遍历数组元素 for (const num of nums) { count += num; } } 6. 查找元素 在数组中查找指定元素需要遍历数组,每轮判断元素值是否匹配,若匹配则输出对应索引。 因为数组是线性数据结构,所以上述查找操作被称为“线性查找”。 // === File: array.ts === /* 在数组中查找指定元素 */ function find(nums: com 86 ‧ 缓存行:缓存不是单个字节地存储与加载数据,而是以缓存行为单位。相比于单个字节的传输,缓存行 的传输形式更加高效。 ‧ 预取机制:处理器会尝试预测数据访问模式(例如顺序访问、固定步长跳跃访问等),并根据特定模式 将数据加载至缓存之中,从而提升命中率。 ‧ 空间局部性:如果一个数据被访问,那么它附近的数据可能近期也会被访问。因此,缓存在加载某一数 据时,也会加载其附近的数据,以提高命中率。 占用空间:链表元素比数组元素占用空间更多,导致缓存中容纳的有效数据量更少。 ‧ 缓存行:链表数据分散在内存各处,而缓存是“按行加载”的,因此加载到无效数据的比例更高。 ‧ 预取机制:数组比链表的数据访问模式更具“可预测性”,即系统更容易猜出即将被加载的数据。 ‧ 空间局部性:数组被存储在集中的内存空间中,因此被加载数据附近的数据更有可能即将被访问。 总体而言,数组具有更高的缓存命中率,因此它在操作0 码力 | 383 页 | 18.49 MB | 10 月前3
 Hello 算法 1.2.0 繁体中文 TypeScript 版// 直接走訪陣列元素 for (const num of nums) { count += num; } } 6. 查詢元素 在陣列中查詢指定元素需要走訪陣列,每輪判斷元素值是否匹配,若匹配則輸出對應索引。 因為陣列是線性資料結構,所以上述查詢操作被稱為“線性查詢”。 // === File: array.ts === /* 在陣列中查詢指定元素 */ function find(nums: 86 ‧ 快取行:快取不是單個位元組地儲存與載入資料,而是以快取行為單位。相比於單個位元組的傳輸,快 取行的傳輸形式更加高效。 ‧ 預取機制:處理器會嘗試預測資料訪問模式(例如順序訪問、固定步長跳躍訪問等),並根據特定模式 將資料載入至快取之中,從而提升命中率。 ‧ 空間區域性:如果一個數據被訪問,那麼它附近的資料可能近期也會被訪問。因此,快取在載入某一資 料時,也會載入其附近的資料,以提高命中率。 佔用空間:鏈結串列元素比陣列元素佔用空間更多,導致快取中容納的有效資料量更少。 ‧ 快取行:鏈結串列資料分散在記憶體各處,而快取是“按行載入”的,因此載入到無效資料的比例更高。 ‧ 預取機制:陣列比鏈結串列的資料訪問模式更具“可預測性”,即系統更容易猜出即將被載入的資料。 ‧ 空間區域性:陣列被儲存在集中的記憶體空間中,因此被載入資料附近的資料更有可能即將被訪問。 總體而言,陣列具有更高的快取命中率,因此它在操0 码力 | 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: 86 ‧ 快取行:快取不是單個位元組地儲存與載入資料,而是以快取行為單位。相比於單個位元組的傳輸,快 取行的傳輸形式更加高效。 ‧ 預取機制:處理器會嘗試預測資料訪問模式(例如順序訪問、固定步長跳躍訪問等),並根據特定模式 將資料載入至快取之中,從而提升命中率。 ‧ 空間區域性:如果一個數據被訪問,那麼它附近的資料可能近期也會被訪問。因此,快取在載入某一資 料時,也會載入其附近的資料,以提高命中率。 佔用空間:鏈結串列元素比陣列元素佔用空間更多,導致快取中容納的有效資料量更少。 ‧ 快取行:鏈結串列資料分散在記憶體各處,而快取是“按行載入”的,因此載入到無效資料的比例更高。 ‧ 預取機制:陣列比鏈結串列的資料訪問模式更具“可預測性”,即系統更容易猜出即將被載入的資料。 ‧ 空間區域性:陣列被儲存在集中的記憶體空間中,因此被載入資料附近的資料更有可能即將被訪問。 總體而言,陣列具有更高的快取命中率,因此它在操0 码力 | 384 页 | 18.80 MB | 10 月前3
 Hello 算法 1.0.0b5 TypeScript 版count++; } // 直接遍历数组 for (const num of nums) { count += 1; } } 6. 查找元素 在数组中查找指定元素需要遍历数组,每轮判断元素值是否匹配,若匹配则输出对应索引。 因为数组是线性数据结构,所以上述查找操作被称为“线性查找”。 // === File: array.ts === /* 在数组中查找指定元素 */ function find(nums: 行比较。如果两者匹 配,那么密码就被视为正确。 ‧ 数据完整性检查:数据发送方可以计算数据的哈希值并将其一同发送;接收方可以重新计算接收到的 数据的哈希值,并与接收到的哈希值进行比较。如果两者匹配,那么数据就被视为完整的。 对于密码学的相关应用,为了防止从哈希值推导出原始密码等逆向工程,哈希算法需要具备更高等级的安全 特性。 ‧ 抗碰撞性:应当极其困难找到两个不同的输入,使得它们的哈希值相同。 思考的是,为什么要强调对质数取模,或者说对合数取模的弊端是什么?这是一个有趣的问题。 先抛出结论:当我们使用大质数作为模数时,可以最大化地保证哈希值的均匀分布。因为质数不会与其他数 字存在公约数,可以减少因取模操作而产生的周期性模式,从而避免哈希冲突。 举个例子,假设我们选择合数 9 作为模数,它可以被 3 整除。那么所有可以被 3 整除的 key 都会被映射到 0、 3、6 这三个哈希值。 modulus = 9 key0 码力 | 378 页 | 30.70 MB | 1 年前3 Hello 算法 1.0.0b5 TypeScript 版count++; } // 直接遍历数组 for (const num of nums) { count += 1; } } 6. 查找元素 在数组中查找指定元素需要遍历数组,每轮判断元素值是否匹配,若匹配则输出对应索引。 因为数组是线性数据结构,所以上述查找操作被称为“线性查找”。 // === File: array.ts === /* 在数组中查找指定元素 */ function find(nums: 行比较。如果两者匹 配,那么密码就被视为正确。 ‧ 数据完整性检查:数据发送方可以计算数据的哈希值并将其一同发送;接收方可以重新计算接收到的 数据的哈希值,并与接收到的哈希值进行比较。如果两者匹配,那么数据就被视为完整的。 对于密码学的相关应用,为了防止从哈希值推导出原始密码等逆向工程,哈希算法需要具备更高等级的安全 特性。 ‧ 抗碰撞性:应当极其困难找到两个不同的输入,使得它们的哈希值相同。 思考的是,为什么要强调对质数取模,或者说对合数取模的弊端是什么?这是一个有趣的问题。 先抛出结论:当我们使用大质数作为模数时,可以最大化地保证哈希值的均匀分布。因为质数不会与其他数 字存在公约数,可以减少因取模操作而产生的周期性模式,从而避免哈希冲突。 举个例子,假设我们选择合数 9 作为模数,它可以被 3 整除。那么所有可以被 3 整除的 key 都会被映射到 0、 3、6 这三个哈希值。 modulus = 9 key0 码力 | 378 页 | 30.70 MB | 1 年前3
 TypeScript 多场景设计方案及应用实践
js 解耦 保留留 Egg.js 的能⼒力力同时做出提升 TS 和 Egg.js 解耦 保留留 Egg.js 的能⼒力力同时做出提升 TS 和⽬目录解耦 做完了了之后,我们发现了了,加载模式的⾃自动 化,通过扫描完全不不需要⽬目录约定。 弱化⽬目录约定 TS 和⽬目录解耦 弱化⽬目录约定 Controller A Controller B Controller C Service0 码力 | 95 页 | 8.28 MB | 1 年前3 TypeScript 多场景设计方案及应用实践
js 解耦 保留留 Egg.js 的能⼒力力同时做出提升 TS 和 Egg.js 解耦 保留留 Egg.js 的能⼒力力同时做出提升 TS 和⽬目录解耦 做完了了之后,我们发现了了,加载模式的⾃自动 化,通过扫描完全不不需要⽬目录约定。 弱化⽬目录约定 TS 和⽬目录解耦 弱化⽬目录约定 Controller A Controller B Controller C Service0 码力 | 95 页 | 8.28 MB | 1 年前3
共 7 条
- 1













