是否可以根据另一个参数的值将类型分配给函数的参数?
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] 删除。
我来说两句