typescript 如何在另一个模块中扩展联合类型?

ecbunoof  于 2023-05-19  发布在  TypeScript
关注(0)|答案(1)|浏览(167)

有没有办法扩展另一个模块的联合类型?下面是一个人为的例子来说明需要,但我得到了一个ts(3200)重复标识符错误的方法。
在Core模块@org/core中,有一个联合类型OptionType:

// In Core module @org/core

export type OptionType = OptionAType | OptionBType;

在另一个模块中,我想扩展核心模块的OptionType以包含一个新类型MyListOptionType。
因此,当任何人使用@org/list时,他们都可以使用扩展的OptionType。

// In ListModule of another package @org/list

import type { OptionType as OriginalOptionType } from '@org/core';

type MyListOptionType = { foo: string; bar: number };

declare module '@org/core' {
  type OptionType = OriginalOptionType | MyListOptionType;
}

但是,我当前的方法会导致重复标识符错误(ts(3200))。

wyyhbhjk

wyyhbhjk1#

例如,类型别名不像接口那样合并。没有办法在另一个模块中扩展联合。你只能在你的模块中定义一个联合,并根据需要使用它。

相关问题