美文网首页
Typescript 3.9 常用新特性

Typescript 3.9 常用新特性

作者: 前端小白的摸爬滚打 | 来源:发表于2021-12-05 19:59 被阅读0次

写在前面

挑重点的讲一讲

在条件语句中检测未调用的函数

  • 在 3.7 的时候引入了检测未调用函数错误提示,3.9 做了部分优化
function hasImportantPermissions(): boolean {
  // ...
}
// Oops!
if (hasImportantPermissions) {
  //  ~~~~~~~~~~~~~~~~~~~~~~~
  // This condition will always return true since the function is always defined.
  // Did you mean to call it instead?
  deleteAllTheImportantFiles();
}

但是,此错误仅适用于 if 语句中的条件。现在三元条件(即语法)现在也支持此功能。

declare function listFilesOfDirectory(dirPath: string): string[];
declare function isDirectory(): boolean;
function getAllFiles(startFileName: string) {
  const result: string[] = [];
  traverse(startFileName);
  return result;
  function traverse(currentPath: string) {
    return isDirectory
      ? //     ~~~~~~~~~~~
        // This condition will always return true
        // since the function is always defined.
        // Did you mean to call it instead?
        listFilesOfDirectory(currentPath).forEach(traverse)
      : result.push(currentPath);
  }
}

解析可选链与非 null 断言中的差异

  • TypeScript 最近实现了对可选链操作符的支持,但根据广大使用者的反馈,非 null 断言操作符(!)的可选链(?.)行为不符合直觉。
foo?.bar!.baz;

被解释为等效于以下 JavaScript 代码:

(foo?.bar).baz;

在以上代码中,括号会阻止可选链的“短路”行为;因此如果未定义 foo 为 undefined,则访问 baz 会引发运行时错误。

换句话说,大多数人认为以上原始代码片段应该被解释为在:

foo?.bar.baz;

中,当 foo 为 undefined 时,计算结果为 undefined。

这是一项重大变化,但我们认为大部分代码在编写时都是为了考虑新的解释场景。如果您希望继续使用旧有行为,则可在!操作符左侧添加括号,如下所示:

(foo?.bar)!.baz;

相关文章

  • Typescript 3.9 常用新特性

    写在前面 挑重点的讲一讲 在条件语句中检测未调用的函数 在 3.7 的时候引入了检测未调用函数错误提示,3.9 做...

  • Typescript 3.7 常用新特性

    写在前面 不是完整的版本新特性,这里只写出了我觉得常用的新特性 可选链式运算符 ?. js 也支持了这个特性 ob...

  • Typescript 3.8 常用新特性

    类型限制的导入导出方法 (Type-Only Imports and Export) TypeScript 3.8...

  • Typescript 4.5 常用新特性

    Awaited 类型与 Promise 改进 TypeScript 4.5 引入了一种新的实用程序类型: Awai...

  • Typescript 4.4 常用新特性

    用于 Aliased 条件的控制流分析 在这个例子中,我们检查了 arg 是否是一个 string。TypeScr...

  • Typescript 4.3 常用新特性

    override 和 --noImplicitOverride 标志 当一个方法被标记为 override 时,T...

  • Typescript 4.0 常用新特性

    写在前面 并不是所有的新新特性,只是罗列一些重点的 可变元祖类型 元组类型语法中的 spread 现在可以泛型 r...

  • Typescript 4.1 常用新特性

    模版字面量类型 在替代位置有联合类型呢?它会生成可以由每个联合成员表示的所有可能的字符串字面量的集合。 映射类型中...

  • Typescript 4.2 常用新特性

    元组类型中的前导 / 中间剩余元素 每个元组只有一个剩余元素,并且剩余元素后面不能有可选元素。 这些没有后缀的剩余...

  • TypeScript项目引用(project reference

    转发 # TypeScript项目引用(project references) TypeScript新特性之项目引...

网友评论

      本文标题:Typescript 3.9 常用新特性

      本文链接:https://www.haomeiwen.com/subject/dplwxrtx.html