这是一个非常人为的例子,所以请耐心等待:
我有一个功能foo。它采用该类型的对象作为其参数
interface Foo {
bar: number,
baz: number,
enabled?: boolean,
}
当enabled用户未提供或为 false 时,foo将返回类型的对象Result
interface Result {
result: number
}
所以它只是将这两个数字相加,如下所示
function foo({bar, baz}: Foo): Result {
return {
result: bar + baz
}
}
问题是:当enabled参数中提供 并将其设置为时true,我希望函数返回另一种类型的结果,其中它有另一个字段isEqual,该字段指示bar和baz是否相等。很喜欢
interface AnotherResult {
result : number,
isEqual: boolean
}
这是我们如何使用这个功能
const {result} = foo({baz: 1, bar: 2})
// or
const {result, isEqual} = foo({baz: 1, bar: 2, enabled: true})
理想情况下,当用户enabled: true在 params 中包含 时foo,他们可以 isEqual从 的返回值进行解构foo,而当他们不提供enabled或设置时enabled: false,他们无法isEqual从 的返回值进行解构 foo。
这是我的尝试,但我想不出一种方法来根据参数动态确定返回值的类型。我想知道 TypeScript 是否可以做到这一点
nterface Foo {
bar: number,
baz: number,
enabled?: boolean,
}
interface Result {
result: number
}
interface IsEqual {
isEqual: boolean
}
type ResultWithIsEqualEnabled = Result & IsEqual
function foo({bar, baz, enabled = false}: Foo): ResultWithIsEqualEnabled {
return {
result: bar + baz
}
}
陪伴而非守候
Smart猫小萌
相关分类