Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/react-native/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何使typescript导出向后与module.exports兼容_Javascript_Typescript - Fatal编程技术网

Javascript 如何使typescript导出向后与module.exports兼容

Javascript 如何使typescript导出向后与module.exports兼容,javascript,typescript,Javascript,Typescript,我有一个node.js模块,定义如下: function sayHi(){ // do something } module.exports = sayHi; 并使用以下方式导入: const sayHi = require('./sayHi.js'); 当我切换到typescript时,我创建了sayHi.ts,如下所示: function sayHi():void { // do something } export default sayHi; 它允许我使用以下命令从其他

我有一个node.js模块,定义如下:

function sayHi(){
  // do something
}

module.exports = sayHi;
并使用以下方式导入:

const sayHi = require('./sayHi.js');
当我切换到typescript时,我创建了
sayHi.ts
,如下所示:

function sayHi():void {
  // do something
}

export default sayHi;
它允许我使用以下命令从其他
.ts
文件导入:

import sayHi from "./sayHi";
但是,旧版
.js
文件需要更新为
require('./sayHi.js')。默认值现在导出属性

有什么办法可以两全其美?ES6导入+ES5需要什么

tsconfig.json
---
{
    "compilerOptions": {
        "target": "es5", /* Specify ECMAScript target version: 'ES3' (default), 'ES5', 'ES2015', 'ES2016', 'ES2017', 'ES2018', 'ES2019' or 'ESNEXT'. */
        "lib": [], /* Specify library files to be included in the compilation. */
        "checkJs": false, /* Report errors in .js files. */
        "declaration": true, /* Generates corresponding '.d.ts' file. */
        "declarationMap": true, /* Generates a sourcemap for each corresponding '.d.ts' file. */
        "sourceMap": false, /* Generates corresponding '.map' file. */
        "outDir": ".", /* Redirect output structure to the directory. */
        "rootDir": ".", /* Specify the root directory of input files. Use to control the output directory structure with --outDir. */
        "importHelpers": true, /* Import emit helpers from 'tslib'. */
        "strict": true, /* Enable all strict type-checking options. */
        "moduleResolution": "node", /* Specify module resolution strategy: 'node' (Node.js) or 'classic' (TypeScript pre-1.6). */
        "allowSyntheticDefaultImports": true, /* Allow default imports from modules with no default export. This does not affect code emit, just typechecking. */
        "esModuleInterop": true /* Enables emit interoperability between CommonJS and ES Modules via creation of namespace objects for all imports. Implies 'allowSyntheticDefaultImports'. */
    }
}


我最终使用了:

function sayHi(){...}

exports = sayHi

这对从“/sayHi”
导入sayHi和
const sayHi=require(“/sayHi”)

都有效。这不会直接回答您的问题,但可能有助于解决问题<代码>导出默认sayHi通常被避免,而倾向于
导出函数sayHi(){}
,原因如下:这里有一个与之相关的问题