typescript - 打字稿中可选参数的语义
问题描述
作为其他代码的用户,我希望能够查看一个函数并根据类型是否可选来确定需要什么。
例如:
function doSomething(required: string, optional?: string)
但是作为一个正在为其他人编写代码的开发人员,我仍然想表示需要一个参数,但我想要类型检查,就好像它不是必需的一样,因为我不能保证我的最终用户也在使用打字稿,我想要优雅地处理不好的论点。
有没有可能把我的蛋糕也吃掉?如果我不检查或处理未定义的参数,我是否可以将参数表示为非可选但仍然会出现编译错误?
?: string
和之间是否存在语义差异: string | undefined
还是只对所有必填字段设置先决条件的解决方案?
解决方案
调用中可以省略可选参数。键入为 as 的必需参数T | undefined
仍然存在,尽管您可以传入undefined
function doSomething(required: string, optional: string | undefined) {
}
doSomething("") // error in TS
doSomething("", undefined)
如果用户不使用 Typescript,这一切都不重要,因为用户无论如何都可以传入更少的参数。
function doSomething(required: string, optional: string) {
}
doSomething("") /// Bad in ts, but fine in JS
推荐阅读
- python - 遍历字典,查找重复条目并在重复项之间进行插值
- php - Laravel 使用 API 资源进行分页
- java - 在 Jetty 服务器中重新启动应用程序
- python - 如何删除所有非字母数字字符,除非是单词的一部分
- bash - 用于计数文件的 bash find 命令不起作用
- mysql - 以通用方式从 json 中存在的数组元素形成列
- c - 我正在尝试与 UART 通信以显示字母 A,但我的代码没有停止运行?
- vagrant - 一个名为“petalandstem”的虚拟机已经存在。但实际上我删除了所有虚拟机
- c++11 - 为什么迭代器不能识别被调用函数中多集的数据类型?
- c++ - 如何区分这两个运算符重载?