You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

TypeScript是Bug还是特性?联合类型笔误引发非预期类型报错

解答

结论

这是TypeScript的预设特性,不是编译器Bug。

报错原因

你在定义Type属性的联合类型时,误把最后一个联合分隔符|写成了逗号,触发了TypeScript接口的属性分隔规则:在interface定义中,逗号、分号、换行都可以作为不同属性的分隔标识。
你写错的代码行:

Type: 'casual' | 'pro' | 'titan' | 'nolife', 'YouDidNotDeclare';

会被编译器解析为两个独立的属性声明:

  1. 名为Type的属性,类型为'casual' | 'pro' | 'titan' | 'nolife'联合类型
  2. 名为YouDidNotDeclare的必填属性,你没有给该属性加可选标记?,因此实例化时必须传入该属性才能符合类型约束,这也是你看到缺失属性报错的原因。

该特性的适用场景

支持字符串字面量作为接口属性名的设计,主要用于以下场景:

  • 定义包含特殊字符、空格、不符合JavaScript标识符命名规则的属性类型,比如'order-id': string、'收货地址': string
  • 约束第三方接口、后端返回的非常规命名字段的类型,避免类型校验失效
  • 声明和枚举值、常量字符串绑定的属性类型,提升类型检查的严格性

内容的提问来源于stack exchange,提问作者Travis Sowoolu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.19 20:36:03