美文网首页
TSConfig文件详解05

TSConfig文件详解05

作者: 从零开始学ArchLinux | 来源:发表于2024-06-14 23:44 被阅读0次

编译器配置项-compilerOptions

类型检查相关配置项(二)

确定类型的可选属性 -exactOptionalPropertyTypes

可选属性为对象中可以有这个属性,也可以没有这个属性。当启用exactOptionalPropertyTypes选项时, TypeScript将使用严格的校验规则处理可选属性,不管是类型中定义的,还是在接口中定义的(属性名称后跟着?的为可选属性)。

在下边的示例中,接口定义了一个可选属性colorThemeOverride,它的值为dark或者light

interface UserDefaults {
  // The absence of a value represents 'system'
  colorThemeOverride?: "dark" | "light";
}

如果这个选项未启用,colorThemeOverride可以设置为三个值:darklight或者undefined

如果将值设置为undefined,将导致大多数的JavaScript运行时检查属性是否存在时出现问题:检查结果将返回false,但属性却是存在的。然而,这是不准确的,colorThemeOverride的值为undefined与没有colorThemeOverride这个属性并不相同,特别是在需要不同处理方式时。

exactOptionalPropertyTypes选项使TypeScript的可选属性真正的符合定义:

const settings = getUserSettings();
settings.colorThemeOverride = "dark";
settings.colorThemeOverride = "light";
// But not:
settings.colorThemeOverride = undefined;

exactOptionalPropertyTypes: true时,undefined不能分配给只能是"dark" | "light"的属性,除非将undefined也添加到定义的值中,"dark" | "light" | undefined

禁止switch语句中的case分支存在Fallthrough行为-noFallthroughCasesInSwitch

报告错误当Switch语句中存在Fallthrough行为时报告。确保在Switch语句的每一个在非空case分支中都有breakreturn或者throw,这意味着不会出现意外的fallthrough的case语句。

Fallthrough行为:当一个匹配到一个case分支后,如果该分支没有break语句,接下来的case分支也将运行。

const a: number = 6;
 
switch (a) {
  case 0:
  // Fallthrough case in switch.
    console.log("even");
  case 1:
    console.log("odd");
    break;
}

相关文章

网友评论

      本文标题:TSConfig文件详解05

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