gpt4 book ai didi

typescript - 我可以有一个 Typescript 函数返回一个标量或数组值而不需要调用者强制转换输出吗

转载 作者:搜寻专家 更新时间:2023-10-30 21:27:17 25 4
gpt4 key购买 nike

问题

我有这个功能:

save<T>(x: T | T[]) {
if (x instanceof Array) {
// save array to db
} else {
// save entity to db
}
return x
}

// client code
let o: SomeType = { // values here }
let updated = save(o) // compile confusion...

TS 不知道 updated 是单数还是数组。

问题

如何定义函数以便:

  • 如果传递的是单数参数,typescript 知道结果是单数
  • 如果传递的是数组参数,typescript知道结果是数组

最佳答案

从定义中删除 T[]T[]T 的子集。

function save<T>(x: T): T {
if (x instanceof Array) {
// save array to db
} else {
// save entity to db
}

return x
}

// client code
let a: SomeType = { // values here };
let updateda = save(a); // updateda is of type SomeType

let b: SomeType = { // values here };
let updatedb = save([a, b]); // updatedb is of type SomeType[]

关于typescript - 我可以有一个 Typescript 函数返回一个标量或数组值而不需要调用者强制转换输出吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52039408/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com