1
我有一个图书馆,里面有map
函数的定义:如何在打字稿中扩展打字?
function map<T, U>(f: (x: T) => U, a: Array<T>): Array<U>
function map<T, U>(f: (x: T) => U, a: Functor<T>): Functor<U>
另外,我有一个Maybe
类型,它扩展Functor
另一个库,因此有可能与上述map
功能使用它。
我可以扩展“library1”map
函数的定义如下,所以当我使用map
函数从“library1”它有3个重载(2上面和下面1)?
function map<T, U>(f: (x: T) => U, a: Maybe<T>): Maybe<U>
在第一库中,模块的结构是下面的(库分型与declaration: true
设置自动生成):
// lib/types/index.d.ts
export interface Functor<T> {
map: <T1>(fn: (a: T) => T1) => Functor<T1>;
}
export interface MapFunction {
/**
* Array
*/
<T, T1>(f: (x: T) => T1, a: Array<T>): Array<T1>;
/**
* Functor
*/
<T, T1>(f: (x: T) => T1, a: Functor<T>): Functor<T1>;
}
export declare const map: MapFunction;
// lib/index.d.ts
export * from "./lib/types"
接着,在package.json
,我必须做"typings": "lib/index.d.ts"
1.你的问题与'typings'无关,请阅读它的含义,2.实现是否支持这种签名? –
@NitzanTomer关于2,因为我正确理解这个问题,是的,实现支持这个签名 – 1ven
这对我来说并不清楚。如果实际的实现支持这样的签名,那么为什么不把它包含在原始文件中?为什么你想稍后在不同的地方添加它? –