TypeScript 类型系统深度解析:最佳实践与常见误区
1. 类型与值空间的区分
在 TypeScript 中,类型和值的上下文可能会让人混淆。例如,当你尝试创建名为 Person 的变量和两个名为 string 的变量时,实际上是在值上下文中解释这些名称。正确的做法是将类型和值分开,示例代码如下:
function email(
{to, subject, body}: {to: Person, subject: string, body: string}
) {
// ...
}
虽然这种写法更冗长,但在实际应用中,你可能会为参数使用命名类型,或者从上下文中推断出类型。
以下是一些需要记住的要点:
- 阅读 TypeScript 表达式时,要清楚自己是在类型空间还是值空间。可以使用 TypeScript playground 来培养这种直觉。
- 每个值都有静态类型,但只有在类型空间中才能访问。像 type 和 interface 这样的类型空间构造在编译时会被擦除,在值空间中无法访问。
- 有些构造,如 class 或 enum ,会同时引入类型和值。
- typeof 、 this 等许多运算符和关键字在类型空间和值空间中有不同的含义。
超级会员免费看
订阅专栏 解锁全文
922

被折叠的 条评论
为什么被折叠?



