Consider function with below signature:
function removeNumbersOrStringsElementsFromArray(
targetArray: Array<number | string>,
targetElementOrMultipleOfThem: number | string | Array<number | string>
): {
updatedArray: Array<number | string>;
removedElementsIndexes: Array<number>;
} {
// implementation
}
Even if all elements of targetArray
are strings or all elements are numbers,
const result: Array<string> = removeNumbersOrStringsElementsFromArray([ 1, 2, 3, 4 ], [ 1, 2 ]).updatedArray;
will cause error:
“Type (string|number) is not assignable to type string[]”
If I'll change the signature from Array<number | string>
Array<number | string>
to Array<number> | Array<string>
Array<number> | Array<string>
, It's becomes required to change the removeNumbersOrStringsElementsFromArray
implementation too, however from the view point of JavaScript, it works. Some other solutions?
function removeNumbersOrStringsElementsFromArray< T extends string | number>(
targetArray: Array<T>,
targetElementOrMultipleOfThem: T | Array<T>
): {
updatedArray: Array<T>;
removedElementsIndexes: Array<number>;
} {
}
const result: Array<number> = removeNumbersOrStringsElementsFromArray([1, 2, 3, 4], [1, 2]).updatedArray;
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.