我有一个实现类的外部模块some-module
:
export declare class Some<T> {
...
static create<T>(): Some<T>;
map<U>(x: U): Some<U>;
}
export default Some
我想为我的项目重新定义某些方法的签名,所以我这样做:
declare module 'some-module' {
interface Some<T> {
static create<T extends number>(): Some<T>; // this doen't have any effect
map<U extends number>(x: U): Some<U>;// here I can redefine method
}
}
它有效,现在some.map
具有新的签名。但是我不知道如何重新定义静态方法create
的签名?有可能吗?
所以我可以做:
import {Some} from 'some-module'
const some = Some.create()
some.map // <- this has new signature
Some.create // <- this has old signature
答案 0 :(得分:0)
使用namespace
关键字将函数合并到您的类中。
declare module 'some-module' {
export class Some<T> {
map<U extends number>(x: U): Some<U>;
}
export namespace Some {
const create: <T extends number>() => Some<T>;
}
}
实际上与使用静态方法相同。
用法:
import { Some } from 'some-module';
new Some();
Some.create();