You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

TypeScript如何定义有序迭代器类型?扩展AxiosResponse遇类型问题

问题:如何让迭代器/生成器类型保持解构时的类型顺序?

我尝试定义可用于解构且保留类型顺序的迭代器类型,写法如下:

interface TestIterator {
    0: boolean;
    1: any;
    2: "abc";
    length: 3;
    [Symbol.iterator]: typeof Array.prototype[Symbol.iterator];
}

// 期望构建可解构且保持类型顺序的迭代器类型
const arr: TestIterator = [true, {}, "abc"]

// 但a1、a2、a3无法获取对应位置的正确类型
const [a1, a2, a3] = arr

之后我测试了生成器,发现生成器同样无法保留类型顺序:

function *gen()
{
    yield "abc";
    yield true;
    yield 123;
}

const view_inference_type = gen(); // 生成器类型为:Generator<true | "abc" | 123, void, unknown>

const [g1, g2, g3] = view_inference_type; // g1、g2、g3的类型均为true | "abc" | 123,不符合有序类型的预期

我的实际需求是通过接口合并扩展Axios的AxiosResponse接口,让它支持解构且保留类型顺序,但当前方法无法得到正确类型,元组方案不符合需求:

declare module "axios"
{
    interface AxiosResponse {
        0: boolean;
        1: any;
        2: "async_try";
        length: 3;
        [Symbol.iterator]: Array[Symbol.iterator];
    }
}

请问是否有办法让迭代器或生成器的类型保持顺序,或是手动指定类型顺序?


内容的提问来源于stack exchange,提问作者Autumn

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 00:22:10