// 定义类型别名
type Data1Type = string[] | number[];
type Data2Type = boolean[] | string[];
function combineData<T, U>(data1: T, data2: U): (T extends any[] ? (U extends any[] ? (T[number] & U[number])[] : null) : null) {
// 类型检查
if (!Array.isArray(data1) ||!Array.isArray(data2)) {
return null;
}
// 检查交集类型
if ((Array.isArray(data1) && Array.isArray(data2)) && ((data1.every((item) => typeof item ==='string') && data2.every((item) => typeof item ==='string')))) {
return data1.filter((item, index) => data2.includes(item)) as (T[number] & U[number])[];
}
return null;
}