我想使用TypeScript在我的ReactNative组件中使用MomentJS。我的项目配置为从 node_modules 目录中提取library's d.ts file。
这是我导入库并使用它的方式:
import * as moment from "moment";
const time = moment();
我的打字稿编译但是当我运行应用程序ReactNative错误时:
这是我的 tsconfig.json 文件:
{
"compilerOptions": {
"target": "es6",
"moduleResolution": "node",
"jsx": "react",
"outDir": "build/",
"sourceMap": true,
"noImplicitAny": true,
"suppressImplicitAnyIndexErrors": true
}
}
如果我更改了我的tsconfig' target'到es5我遇到了许多其他模块的问题。
我认为它与this question有关,但我按照该问题的答案所建议的那样做。
答案 0 :(得分:1)
引自@DavidD's comment in the linked answer:
如果你在上面的语法之上使用babel,请小心,babel将阻止函数
moment()
按预期工作,因为它与规范相关联。您可以将"allowSyntheticDefaultImports": true
添加到tsconfig.json,以允许import moment from "moment";
不再抛出错误。
潜在的问题是moment
将一个函数导出为默认函数,但是当使用Babel时(因为你在React Native中),它将被Babel包装在一个对象中。
我不确定TypeScript是否知道此包装或者是否需要更新momentjs的定义。