- 介绍
- TypeScript 简介
- TypeScript 入门
- 探索类型系统
- 原始类型
- 类型注释
- 可选属性
- 只读属性
- 索引签名
- 扩展类型
- 字面量类型
- 字面量推断
- 严格空检查
- 枚举
- 缩小范围
- 赋值
- 控制流分析
- 类型谓词
- 可区分联合
- never 类型
- 详尽性检查
- 对象类型
- 元组类型(匿名)
- 命名元组类型(已标记)
- 固定长度元组
- 联合类型
- 交集类型
- 类型索引
- 值的类型
- Func 返回值的类型
- 模块的类型
- 映射类型
- 映射类型修饰符
- 条件类型
- 分配条件类型
- infer 条件类型中的类型推断
- 预定义条件类型
- 模板联合类型
- 任意类型
- 未知类型
- 空类型
- Never 类型
- 接口及类型
- 内置原始数据类型
- 常见的内置 JS 对象
- 重载
- 合并与扩展
- 类型和接口之间的差异
- Class
- 泛型
- 擦除的结构类型
- 命名空间
- Symbols
- 三斜杠指令
- 类型操作
- 其他
文章来源于网络收集而来,版权归原创者所有,如有侵权请及时联系!
字面量推断
字面量推断是 TypeScript 中的一项功能,允许根据变量或参数的值推断其类型。
在下面的示例中,我们可以看到 TypeScript 认为 x 文字类型是因为该值以后不能随时更改,而 y 被推断为字符串,因为它以后可以随时修改。
const x = 'x'; // x 为字面量类型,因为值不能改变 let y = 'y'; // string, 我们能改变这个值
在下面的示例中,我们可以看到 o.x
被推断为 string
(而不是字面量的 a),因为 TypeScript 认为该值可以在以后随时更改。
type X = 'a' | 'b'; let o = { x: 'a', // 这是一个更宽的 string }; const fn = (x: X) => `${x}-foo`; console.log(fn(o.x)); // 'string' 类型的参数不能赋值给 'X' 类型的参数
正如你所看到的代码在传递 o.x
给 fn
作为一个狭窄类型时,抛出了一个错误。
我们能通过使用 const
或者 X
来借助类型推断解决这个问题:
let o = { x: 'a' as const, };
or:
let o = { x: 'a' as X, };
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论