如何解决错误:(4,1)TS2349:无法调用类型缺少调用签名的表达式。类型“ typeof moment”没有兼容的呼叫签名

时间:2019-09-30 08:18:25

标签: typescript

使用Typescript 3. *和momentjs作为日期 并且出现编译时错误。

  

错误:(3,13)TS2349:无法调用类型缺少调用签名的表达式。类型'typeof moment'没有兼容的呼叫签名。

所以,我正在寻找解决此错误的解决方案。  并找到以下文章, 我做了与文章中描述的解决方案相同的事情。

但是再次出现编译时错误。

  

错误:(1,8)TS1192:模块'“ / Users / hogehoge / Work / Work_Fork / hoge / node_modules / moment / moment”'没有默认导出。

这是我的tsconfig和程序。

{
  "compilerOptions": {
    "moduleResolution": "node",
    "skipLibCheck": false,
    "target": "es5",
    "module": "commonjs",
    "lib": ["es2017", "dom"],
    "experimentalDecorators": true,
    "allowJs": false,
    "jsx": "react",
    "sourceMap": true,
    "strict": true,
    "noImplicitReturns": true,
    "noUnusedLocals": true,
    "noUnusedParameters": true,
    "noFallthroughCasesInSwitch": true,
    "esModuleInterop": true,
    "removeComments": true,
    "newLine": "LF",
    "downlevelIteration": true,
    "resolveJsonModule": true,
    "allowSyntheticDefaultImports": false
  },
  "exclude": ["node_modules"]
}

import moment from 'moment';

console.log(moment().format('YYYY-MM-DD'))

1 个答案:

答案 0 :(得分:0)

我没有您的package.json,所以我以这种方式重现了您的情况:

npm init
npm i typescript moment @types/node

文件test.ts

let moment = require("moment");
console.log(moment().format('YYYY-MM-DD'))

(使用require代替import

然后执行“编译器”:

_modules/.bin/tsc test.ts

没有错误,这样对我来说效果很好。 从今天开始,脚本返回2019-09-30