首页 > 其他分享 >[Typescript] Handle CommonJS import in Typescript

[Typescript] Handle CommonJS import in Typescript

时间:2024-01-28 20:45:35浏览次数:25  
标签:CommonJS Typescript exports library export Melon import

Let's say we need to use a library with commonJS code.

class Melon {
  cutIntoSlices() {
  }
}

module.exports = Melon

Then we want to import this inside our Typescript project:

import * as melonNamespace from "./melon" // typescript doesn't happen about this
// This moudle can only be referneced with ECMAScrip
// import/exports by turing on the'esModuleInterop' flag and referencing its default export.

So how to avoid this.

Solution 1, change library how it's export thing

class Melon {
  cutIntoSlices() {
  }
}

module.exports = { Melon } // <-- change to named export

If we change to named export, then it should work.

import {Melon} from "./melon"

But if the code is inside a library, you cannot do this change of course.

Solution 2:

Change the tsconfig setting as it suggested: esModuleInterop: true, but suggest not to do so.
If you are writing a lib, don't turn on this setting, because it forces your consumers also turns on this settings as well.

class Melon {
  cutIntoSlices() {
  }
}

module.exports = Melon

index.ts

import Melon = require('./melon')

标签:CommonJS,Typescript,exports,library,export,Melon,import
From: https://www.cnblogs.com/Answer1215/p/17993296

相关文章

  • Import yaml ModuleNotFoundError: No module named 'yaml'
    ImportyamlModuleNotFoundError:Nomodulenamed'yaml'Python错误信息:ModuleNotFoundError异常,具体错误是找不到名为yaml的模块。这意味着在执行导入语句importyaml时,Python解释器没有在你的环境里找到这个模块。yaml是一个用于处理YAML数据格式的库,如果你在代码中需要解析或......
  • 使用命令行方式搭建uni-app + Vue3 + Typescript + Pinia + Vite + Tailwind CSS + uv
    使用命令行方式搭建uni-app+Vue3+Typescript+Pinia+Vite+TailwindCSS+uv-ui开发脚手架项目代码以上传至码云,项目地址:gitee.com/breezefaith…目录一、前言近日心血来潮想做一个开源项目,目标是做一款可以适配多端、功能完备的模板工程,包含后台管理系统和前台......
  • 动手学深度学习v2(李沐2021版),from d2l import torch as d2l报错
     点击查看代码%matplotlibinline#该项事实也无法运行fromd2limporttorchasd2l#此行报错如下所示点击查看代码---------------------------------------------------------------------------ImportErrorTraceback(mostrecentcal......
  • Nacos 管理后台 import 配置的踩坑
    前言nacos后台页面提供了批量导入配置文件的功能,但官方文档中没有说明具体怎么使用。具体使用需要zip文件,文件夹名称为group名称。导入成功页面提示为注意:此功能很危险,没有二次确认的机会,一定要先在测试环境验证好。mac系统下压缩文件中会多一个.DS_Store文件......
  • OpenHarmony—TypeScript到ArkTS约束说明
    对象的属性名必须是合法的标识符规则:arkts-identifiers-as-prop-names级别:错误在ArkTS中,对象的属性名不能为数字或字符串。通过属性名访问类的属性,通过数值索引访问数组元素。TypeScriptvarx={'name':'x',2:'3'};console.log(x['name']);console.log(x[2]);ArkT......
  • JavaScript ES6中 module , import和export
      假如你想直接在html的script里面使用import,你会遇到以下这两个问题:需要给script标签添加type='module'属性会遇到跨域问题,不单独启用一个服务器无法解决如果不启动一个server,访问js用的协议是file,不在浏览器跨域允许的协议中。因此无法做到拿到js文件,......
  • 在TypeScript项目中搭配Axios封装后端接口调用
    前言本来是想发next.js开发笔记的,结果发现里面涉及了太多东西,还是拆分出来发吧~本文记录一下在TypeScript项目里封装axios的过程,之前在开发StarBlog-Admin的时候已经做了一次封装,不过那时是JavaScript,跟TypeScript还是有些区别的。另外我在跟着next.js文档开发的......
  • cannot import name ‘compare_ssim‘ 解读
    不能导入'compare_ssim'的解决方法当在Python中编写图像处理代码时,可能会遇到ImportError:cannotimportname'compare_ssim'的错误。这个错误通常是由于无法导入compare_ssim函数而引起的。本文将介绍导致此错误的可能原因,并提供解决方案。问题原因compare_ssim函数是用于计算结......
  • [Typescript] Resolving the Block-scoped Variable Error in TypeScript (moduleDete
    constNAME="Matt";TypeScriptistellinguswecan'tredeclarethe name variablebecauseithasalreadybeendeclaredinsideof lib.dom.d.ts.The index.ts fileisbeingdetectedasaglobalscriptratherthanamodule.Thisisbecause,by......
  • [Typescript] Show the error close to where it's causes
    Examplecode:constroutingConfig={routes:[{path:"home",component:"HomeComponent",},{path:"about",component:12,},{path:"contact",componen......