typescript - 如何跨模块共享 TypeScript 重载?
问题描述
我想为这个函数的不同实现重用一个函数的一些重载。就我而言,我有两个版本的 API,其中第二个版本允许更多行为。我尝试了很多东西,其中最接近的似乎是使用环境函数声明(可能还有环境模块)。
我目前的状态是这样的:
// fn-overloads-v1.ts
export declare function fn(arg: 'int'): number;
export declare function fn(arg: 'string'): string;
// fn-v1.ts
export * from './fn-overloads-v1.ts';
export function fn(arg: 'int' | 'string'): number | string {
// do something
}
// fn-overloads-v2.ts
export * from './fn-overloads-v1.ts';
export declare function fn(arg: 'bool'): bool;
// fn-v2.ts
export * from './fn-overloads-v2.ts';
export function fn(arg: 'int' | 'string' | 'bool'): number | string | bool {
// do something
}
不幸的是,这不会导致预期的结果。在下面我想a
成为 type bool
,但它是 type number | string | bool
。
import { fn } from './fn-v2';
const a = fn('bool'); // expect a to be of type bool
非常欢迎提出想法!