TypeScript typing problem - numbro.d.ts should not use "export default"
See original GitHub issueThe TypeScript typing file for numbro
has recently been changed as follows between versions 2.1.0 and 2.1.1:
-export = numbro;
+export default numbro;
(Related issue: #352, related PR: #363)
This causes problems if Numbro is being used in a TypeScript project where tsconfig.json
specifies module: "commonjs"
and target: "es5"
. Since the typing file declares that numbro
has a default export, TS only accepts the following syntax to import the entire module:
import numbro from "numbro";
numbro(123);
However, this transpiles down to the following in ES5:
var numbro_1 = require("numbro");
numbro_1.default(123);
which is incorrect because the JS code of numbro
does not have a property named default
- the module exports the entire numbro
function as the module-level export instead. I believe that the typing file should revert to export = numbro
to reflect this, or the module itself should include exports.default = numbro
to provide a default export.
Issue Analytics
- State:
- Created 5 years ago
- Reactions:16
- Comments:5 (2 by maintainers)
Top GitHub Comments
I’m still getting this in 2.2.0 with the following tsconfig:
"module": "commonjs", "target": "es2019",
the following import statement:import numbro from 'numbro';
and the following usage:numbro(value).format({ thousandSeparated: true, mantissa: 2 });
the following error occurs:numbro_1.default is not a function TypeError: numbro_1.default is not a function
EDIT: @BenjaminVanRyseghem Sorry for the @ but just checking if you had a chance to see the above as the issue was closed when I commented.
@BenjaminVanRyseghem this is still an issue, as exemplified by #435; the changes provided in #430 does not address the original problem reported here.