账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    typescript 当中使用reduce进行类型转换应该怎么写泛型不报错呢?
    64
    0
    const strArr = ['123:1','234:2','345:1']const altArr = strArr.reduce((sum,curr)=>{ return (/.*(?=:1$)/g.test(curr)? sum.concat(+curr.split(':')[0]) : sum;},[])
    0
    打赏
    收藏
    点击回答
        全部回答
    • 共 0 条
    • Bemisfits 普通会员 1楼

      在 TypeScript 中,使用 reduce 进行类型转换可以接受一个泛型作为参数,例如 reduce<T>(a: T[], fn: (item: T) => T, initialValue: T | undefined): T[],其中 T 是一个类型参数,表示泛型的类型。以下是示例代码,它在 reduce 方法中使用 fn 函数来实现类型转换:

      ```typescript function combine(...args: any[]): any { const result: any = []; args.forEach(arg => { if (typeof arg === 'object') { const converted = fn(arg); if (converted !== undefined) { result.push(converted); } } else { result.push(arg); } }); return result; }

      const numbers = [1, 2, 3, 4, 5]; const squaredNumbers = combine(...numbers); console.log(squaredNumbers); // Output: [1, 4, 9, 16, 25] ```

      在这个示例中,combine 函数接受一个或多个参数 any[],表示任意类型参数的数组。在 fn 函数中,我们使用了 typeof arg === 'object' 来判断参数是否为对象类型,如果是对象类型,我们使用 fn(arg) 函数对对象进行类型转换,并将转换后的值存储在 converted 变量中。如果 converted 不为 undefined,则将转换后的值添加到结果数组 result 中。如果 arg 不为对象类型,直接将 arg 添加到结果数组 result 中。

      在 reduce 方法中,initialValue 参数是默认的初始值,如果未指定,则默认为 undefined。在示例中,我们将初始值设置为 undefined,以便在转换任何对象类型时都能正常工作。

      注意:在实际使用中,可能需要根据具体的类型转换需求和类型检查逻辑,对 fn 函数的类型参数进行类型检查,确保其正确接收并处理各种类型的参数。例如,如果在对象数组中查找特定类型的元素,可能需要使用更复杂的类型检查逻辑,如判断 fn(arg) 是否返回一个 typeof arg === 'object' 的结果,如果不是,那么就不应该进行类型转换。

    • 莫晓渡 普通会员 2楼

      在 TypeScript 中,使用 reduce 进行类型转换可以接受一个泛型作为参数,例如 reduce<T>(a: T[], fn: (item: T) => T, initialValue: T | undefined): T[],其中 T 是一个类型参数,表示泛型的类型。以下是示例代码,它在 reduce 方法中使用 fn 函数来实现类型转换:

      ```typescript function combine(...args: any[]): any { const result: any = []; args.forEach(arg => { if (typeof arg === 'object') { const converted = fn(arg); if (converted !== undefined) { result.push(converted); } } else { result.push(arg); } }); return result; }

      const numbers = [1, 2, 3, 4, 5]; const squaredNumbers = combine(...numbers); console.log(squaredNumbers); // Output: [1, 4, 9, 16, 25] ```

      在这个示例中,combine 函数接受一个或多个参数 any[],表示任意类型参数的数组。在 fn 函数中,我们使用了 typeof arg === 'object' 来判断参数是否为对象类型,如果是对象类型,我们使用 fn(arg) 函数对对象进行类型转换,并将转换后的值存储在 converted 变量中。如果 converted 不为 undefined,则将转换后的值添加到结果数组 result 中。如果 arg 不为对象类型,直接将 arg 添加到结果数组 result 中。

      在 reduce 方法中,initialValue 参数是默认的初始值,如果未指定,则默认为 undefined。在示例中,我们将初始值设置为 undefined,以便在转换任何对象类型时都能正常工作。

      注意:在实际使用中,可能需要根据具体的类型转换需求和类型检查逻辑,对 fn 函数的类型参数进行类型检查,确保其正确接收并处理各种类型的参数。例如,如果在对象数组中查找特定类型的元素,可能需要使用更复杂的类型检查逻辑,如判断 fn(arg) 是否返回一个 typeof arg === 'object' 的结果,如果不是,那么就不应该进行类型转换。

    • 愛到絶朢是離開 普通会员 3楼

      在 TypeScript 中,使用 reduce 进行类型转换可以接受一个泛型作为参数,例如 reduce<T>(a: T[], fn: (item: T) => T, initialValue: T | undefined): T[],其中 T 是一个类型参数,表示泛型的类型。以下是示例代码,它在 reduce 方法中使用 fn 函数来实现类型转换:

      ```typescript function combine(...args: any[]): any { const result: any = []; args.forEach(arg => { if (typeof arg === 'object') { const converted = fn(arg); if (converted !== undefined) { result.push(converted); } } else { result.push(arg); } }); return result; }

      const numbers = [1, 2, 3, 4, 5]; const squaredNumbers = combine(...numbers); console.log(squaredNumbers); // Output: [1, 4, 9, 16, 25] ```

      在这个示例中,combine 函数接受一个或多个参数 any[],表示任意类型参数的数组。在 fn 函数中,我们使用了 typeof arg === 'object' 来判断参数是否为对象类型,如果是对象类型,我们使用 fn(arg) 函数对对象进行类型转换,并将转换后的值存储在 converted 变量中。如果 converted 不为 undefined,则将转换后的值添加到结果数组 result 中。如果 arg 不为对象类型,直接将 arg 添加到结果数组 result 中。

      在 reduce 方法中,initialValue 参数是默认的初始值,如果未指定,则默认为 undefined。在示例中,我们将初始值设置为 undefined,以便在转换任何对象类型时都能正常工作。

      注意:在实际使用中,可能需要根据具体的类型转换需求和类型检查逻辑,对 fn 函数的类型参数进行类型检查,确保其正确接收并处理各种类型的参数。例如,如果在对象数组中查找特定类型的元素,可能需要使用更复杂的类型检查逻辑,如判断 fn(arg) 是否返回一个 typeof arg === 'object' 的结果,如果不是,那么就不应该进行类型转换。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部