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
這對我來說並不清楚。如果實際的實現支持這樣的簽名,那麼爲什麼不把它包含在原始文件中?爲什麼你想稍後在不同的地方添加它? –