小编Sas*_*sha的帖子

TypeScript 中带有省略类型的函数链

假设我想在 TypeScript 中实现类型化函数链,但在这种情况下,调用函数会从返回类型中删除该函数。例如:

type Omit<T, K> = Pick<T, Exclude<keyof T, K>>;

interface Chainable {
  execute: () => Promise<void>;
}

interface Chain1 extends Chainable {
  chain1?: () => Omit<this, 'chain1'>;
}

interface Chain2 extends Chainable {
  chain2?: () => Omit<this, 'chain2'>;
}

let chain: Chain1 & Chain2 = {
  execute: () => null,
  chain1: () => {
    delete chain.chain1;
    return chain;
  },
  chain2: () => {
    delete chain.chain2;
    return chain;
  }
};

chain.chain1().chain2().execute(); // Using the function chain
Run Code Online (Sandbox Code Playgroud)

当我调用 时chain.chain1() …

method-chaining chaining typescript

4
推荐指数
1
解决办法
1237
查看次数

标签 统计

chaining ×1

method-chaining ×1

typescript ×1