运算放大器基本公式K1,K2带有负号,是不是把运算结果去一个负号

T[K] 返回 (类型T中以K为属性名的值) 的类型K 必须是 keyof T 的子集,可以是一个字符串字面量

// 以上的括号不是必需的: typeof 优先级更高

我们可以在类型定义中引用其他类型的 (部分或全部) 属性,并对其进行运算用运算结果定义出新的类型 (Mapped Type)。即”把旧类型的属性 map (映射) 成新类型的属性”可以比作 list comprehension (把旧 list 的成员 map 成新 list 的成员) 的类型属性版。

// 从A中取一部分属性类型不变 (A[P] 是上面讲的查找类型) // 从A中取所有属性, 类型改为number

使用上面介绍的新特性可以定义出一些可用作 类型的 decorator 嘚泛型比如下面的 Readonly (已经在TS2.1标准库中):

利用这些类型运算,我们可以表达出更复杂的编译期约束十分适合 (需要和无限的类型一起工作的) 的玳码或库。比如 Release note 中还提到的Partial / Pick / Record 等类型

前面提到的 Readonly 只限制属性只读,不会把属性的属性也变成只读:

// 属性: 不可赋值
// 属性的属性: 可以赋值

我们可鉯写一个DeepReadonly实现递归的只读:

// 属性: 不可赋值 // 属性的属性: 也不可赋值

(这个话题是 @vilicvane 帮我审稿时提到的。我又翻了一下 后觉得满有意思… 就一起加進来了不读这个在大多数情况下应该不影响使用。)


  

(规则1有时会导致一些不直观的结果不过大多数情况下我们不是想要基本类型的同构類型,到此停止展开可以接受)

}

我要回帖

更多关于 运算放大器基本公式 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信