# 写 TypeScript 时,很多人可能会犯的几个错误

back

# 没有使用严格模式

strict:true

严格模式可以消除语法里一些不合理,不严谨的地方,可以让TS往更合理、更安全、更严谨的方向去发展: 通过将一些TS的静默错误更改为抛出错误,消除了TS的一些静默错误,能更加有效保障代码运行的安全;提高编译器效率,增加运行速度;禁止一些可能在ECMAScript未来版本中定义的语法。

# 使用 || 确定默认值

TIP

使用最新的??运算符或者最好是在参数级别定义返回值。

function a(text: string, data: Date = new Date) {
    return {
        text,
        date,
    }
}
1
2
3
4
5
6
  • ??运算符去年才被引入,如果在长函数的中间使用值,可能很难将它们定义为参数默认值。
  • ??|| 不同,它只返回 null 或 undefined,而不是所有 false 值。
    • 0 ?? 5--->0,而0 || 5--->5

# 使用any作为类型

在所有我们不确定类型的情况下,我们都应该使用unknown

  • 为什么要这么做呢?
    • any 很简单,因为它从根本上禁用了所有类型检查。通常,即使在官方类型中也使用 any(例如,上面示例中的 response.json() 被 TypeScript 团队键入为 Promise<any>)。
  • 为什么不能用any?
    • 它从根本上禁用所有类型检查。通过 any 进入的所有值都将完全放弃任何类型检查。这可能会变得非常难以捕捉错误,因为只有当我们对类型结构的假设符合运行时代码时,代码才会失败。

# val 作为 SomeType

# any在测试用例中的表现