基于另一个参数值的条件参数类型

克巴里奥蒂斯

是否可以根据另一个参数的值将类型分配给函数的参数?

type EmployeeType = {
 // ...
}

type EmployerType = {
 // ...
}


enum UserType {
    Employee = 'employee',
    Employer = 'employer'
}

function createUser(type: UserType, properties: EmployeeType | EmployerType) {
 // ...
}

在上面的例子中,我想properties根据type参数的值分配相应的类型

对此的一种替代方法是创建不同的函数,但在更多用户类型和更广泛名称的更复杂场景中,可能会导致非常难以理解的函数名称。

马切伊·西科拉

这里最简单的解决方案是使用函数重载考虑:


function createUser(type: UserType.Employee, properties: EmployeeType): void 
function createUser(type: UserType.Employer, properties: EmployerType): void
function createUser(type: UserType, properties: EmployeeType | EmployerType) {
 // ...
}

由于重载,我们可以进行许多类型定义,这将作为 TS 的指南,函数参数类型应该如何为调用者表现。请注意,最终定义适用于整个可用频谱。

void return 在这里仅作为示例返回类型。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

类型提示,其中一个参数是另一个参数的类型

如何使用基于另一个参数的对象列表中的参数?(JavaScript)

动态参数值取决于另一个动态参数值

根据TypeScript中的另一个通用参数推断通用类型参数

TypeScript是否可以基于另一个参数来调整参数?

SQL插入参数值和另一个表中的值

基于另一个键的值的条件类型

基于另一个参数的条件where子句

如何设置从另一个StreamProvider获取参数值的StreamProvider?

打字稿| 使用参数将类型参数传递给另一个类型

基于另一个参数约束参数类型的最有效方法

基于另一个参数向argparse添加参数的Python方法

取决于具有参数值的另一个任务

给定类型的Require参数基于TypeScript中的另一个参数

我可以基于另一个参数的_value_强制一个参数吗?

具有基于另一个参数的默认参数的函数

INDIRECT参数值在另一个标签中无效

如何将模板参数固定为基于另一个模板参数的一个枚举类?

Scala:基于相同层次结构的另一个类型参数值限制参数

从另一个网址获取参数值

获取传递的参数值,以脚本从另一个脚本导入变量

从另一个类的方法获取参数值

如何基于SSRS中的另一个参数填充多值参数

将一个函数的返回参数值传递给另一个烧瓶

基于另一个参数的打字稿函数参数类型

根据另一个参数的已指定值制表符完成参数值

AWS DynamoDB DocumentClient 查询错误 - 一个或多个参数值无效:条件参数类型与架构类型不匹配

如何键入依赖于另一个类参数值的类参数?

获取一个参数的值并使其成为另一个参数的类型