有没有办法在tsconfig中使用--esModuleInterop而不是它是一个标志?

时间:2018-02-14 10:56:34

标签: typescript

Typescript v 2.7发布了一个名为--esModuleInterop https://www.typescriptlang.org/docs/handbook/compiler-options.html的非常简洁的旗帜,我试图弄清楚是否有办法将它与tsconfig.json一起使用,因为它目前还没有似乎记录在案:http://www.typescriptlang.org/docs/handbook/tsconfig-json.html

除非它以某种方式与module?

一起使用

我想要实现的主要用例是能够导入这样的东西

import React from "react"

而不是

import * as React from "react"

如果可能的话,从我的tsconfig中执行此操作

2 个答案:

答案 0 :(得分:23)

是的,在tsconfig.json中执行"esModuleInterop": true。对于可以传递给CLI的每个标志选项,通常可以在配置文件中以这种方式完成相同的操作。在命令行上执行tsc --init会生成一个tsconfig,其中包含解释所有可用选项的注释。

编辑:我了解到esModuleInterop的行为取决于module的设置。

如果您有"module": "commonjs",则只需启用"esModuleInterop": true

如果您有"module": "es2015""module": "esnext",则还必须启用"allowSyntheticDefaultImports": true才能导入CommonJS模块(如React)作为默认值。

答案 1 :(得分:2)

我也面临同样的问题,

  • 此问题特定于打字稿版本
  • 执行以下步骤将其删除(对我有用) 1)在您的项目中,在package.json文件中 - 验证您是否在依赖项下有typescript devDependencies { “typescript”:“^ 2.5.2” } 2)在终端输入tsc -version命令,检查系统上打字稿的安装版本
    • 这将在全局级别显示已安装的打字稿版本
    • o / p version - 2.9.1 3)使用系统上安装的版本更改版本号insider package.json文件。

devDependencies { “typescript”:“^ 2.9.1” }

希望这会起作用!!!!!!!!!!!!