typescript - 基于另一个参数值的条件参数类型
问题描述
是否可以根据另一个参数的值将类型分配给函数的参数?
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 在这里仅作为示例返回类型。
推荐阅读
- azure - 如何在 PowerApps 中获取图形 API 调用的不记名令牌?
- php - 为什么身份验证检查在 Postman 中返回 true,但在浏览器中返回 false?
- azure - 如何使用本地包创建天蓝色机器学习评分图像
- node.js - 通过 DynamoDB 中的 JSON 对象进行映射
- tensorflow - 如何在训练过程中获得关于神经网络可训练参数的雅可比矩阵输出?
- typescript - 如何在不等待异步函数的情况下执行return语句
- python - 连续日期列表
- angular - 类型字符串上不存在 Angular i18n 属性“currentLang”
- javascript - Javascript RegExp 用于精确匹配具有特殊字符的多个单词
- hook-woocommerce - 在 woocommerce 单品页面上放置简码