Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Refactor TypeScript definition to CommonJS compatible export (#20)
- Loading branch information
1 parent
aa885ea
commit 0c3d690
Showing
4 changed files
with
60 additions
and
20 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,15 +1,54 @@ | ||
/** | ||
* Make a function mimic another one. It will copy over the properties `name`, `length`, `displayName`, and any custom properties you may have set. | ||
* | ||
* @param to - Mimicking function. | ||
* @param from - Function to mimic. | ||
* @returns The modified `to` function. | ||
*/ | ||
export default function mimicFn< | ||
ArgumentsType extends unknown[], | ||
ReturnType, | ||
FunctionType extends (...arguments: ArgumentsType) => ReturnType | ||
>( | ||
to: (...arguments: ArgumentsType) => ReturnType, | ||
from: FunctionType | ||
): FunctionType; | ||
declare const mimicFn: { | ||
/** | ||
Make a function mimic another one. It will copy over the properties `name`, `length`, `displayName`, and any custom properties you may have set. | ||
@param to - Mimicking function. | ||
@param from - Function to mimic. | ||
@returns The modified `to` function. | ||
@example | ||
``` | ||
import mimicFn = require('mimic-fn'); | ||
function foo() {} | ||
foo.unicorn = '🦄'; | ||
function wrapper() { | ||
return foo(); | ||
} | ||
console.log(wrapper.name); | ||
//=> 'wrapper' | ||
mimicFn(wrapper, foo); | ||
console.log(wrapper.name); | ||
//=> 'foo' | ||
console.log(wrapper.unicorn); | ||
//=> '🦄' | ||
``` | ||
*/ | ||
< | ||
ArgumentsType extends unknown[], | ||
ReturnType, | ||
FunctionType extends (...arguments: ArgumentsType) => ReturnType | ||
>( | ||
to: (...arguments: ArgumentsType) => ReturnType, | ||
from: FunctionType | ||
): FunctionType; | ||
|
||
// TODO: Remove this for the next major release, refactor the whole definition to: | ||
// declare function mimicFn< | ||
// ArgumentsType extends unknown[], | ||
// ReturnType, | ||
// FunctionType extends (...arguments: ArgumentsType) => ReturnType | ||
// >( | ||
// to: (...arguments: ArgumentsType) => ReturnType, | ||
// from: FunctionType | ||
// ): FunctionType; | ||
// export = mimicFn; | ||
default: typeof mimicFn; | ||
}; | ||
|
||
export = mimicFn; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
What is the motivation for removing default module import syntax? e.g.,
import mimic from 'mimic-fn'
?