首页 > 解决方案 > 打字稿中可选参数的语义

问题描述

作为其他代码的用户,我希望能够查看一个函数并根据类型是否可选来确定需要什么。

例如:

function doSomething(required: string, optional?: string)

但是作为一个正在为其他人编写代码的开发人员,我仍然想表示需要一个参数,但我想要类型检查,就好像它不是必需的一样,因为我不能保证我的最终用户也在使用打字稿,我想要优雅地处理不好的论点。

有没有可能把我的蛋糕也吃掉?如果我不检查或处理未定义的参数,我是否可以将参数表示为非可选但仍然会出现编译错误?

?: string和之间是否存在语义差异: string | undefined

还是只对所有必填字段设置先决条件的解决方案?

标签: typescript

解决方案


调用中可以省略可选参数。键入为 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

游乐场链接


推荐阅读