这是一个非常做作的例子,所以请接受我:
我有一个功能
foo
. 它将此类型的对象作为其参数
interface Foo {
bar: number,
baz: number,
enabled?: boolean,
}
什么时候?
enabled
不是由用户提供的,或者当它为false时,
将返回类型为的对象
Result
interface Result {
result: number
}
所以它只是把这两个数字相加
function foo({bar, baz}: Foo): Result {
return {
result: bar + baz
}
}
启用
在params中提供,并将其设置为
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
福
,它们可以破坏结构
从的返回值
当他们不提供
启用
enabled: false
,他们
不能
从的返回值
福
.
这是我的尝试,但是我想不出一种基于params动态确定返回值类型的方法。我想知道用打字机是不是也可以
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
}
}