我有这个功能:
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
是单数还是数组。
如何定义函数,以便:
答案 0 :(得分:3)
从定义中删除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[]