typescript - 'export default' 和 'export =' 和 TypeScript 中使用 `import = require()` 的区别?
问题描述
最近一个项目中的一个 eslint 规则no-var-requires
迫使我写import = require()
. 直到现在我才看到这个,我在导入方面也没有任何问题,但阅读它表明这已经是 2017 年的事情了。这让我想知道为什么有人会强制执行这个 - 或者更好的是,为什么它被认为是一种不好的做法,require()
以及两者之间的实际区别是什么
export default class ZipCodeValidator { }
export = class ZipCodeValidator { }
在我的理解中,后者与import = require()
TS 中的语法直接相关?
关于export =
和import = require()
^的文档说
CommonJS 和 AMD 都支持用自定义的单个对象替换导出对象。默认导出旨在替代此行为;然而,两者是不相容的。
但所有这些工作都很好
require('dotenv').config() // this is what I used originally
import dotenv = require('dotenv') // the eslint rule forces me to write this
dotenv.config()
const dotenv = require('dotenv')
dotenv.config()
import * as dotenv from 'dotenv' // This is what I've been using otherwise
dotenv.config()
这让我想知道import = require()
首先的目的。
它不是仅仅require
在一行中使用光滑的不显眼的调用,而是迫使我将导入和调用分成两行,这反过来又带来了另一个复杂性。我们有一个 lint/prettier 规则来组织导入到顶部,但这使得其他导入的模块在我的环境初始化之前运行。
原谅我问得这么含糊,但我什至不知道从哪里开始。
解决方案
推荐阅读
- typescript - 如何在 Typescript 中实现声明 .d.ts 文件
- angular - 路由权威角度
- typescript - 如果参数类型为“从不”,则 typescript ReturnType 为“any”
- node.js - 离子科尔多瓦构建类型'ModuleWithProviders'不是通用的
- macos - Mac 在两个终端中显示两个不同的环境变量值
- javascript - 我怎样才能让这个更短?
- azure - Azure Web 应用程序的域掩码是否有效
- python - 使用 Protocol 和 TypeVar 指定任意数据类的 Python 类型提示
- spring - Spring mongoDB 审计获取表上要更新的源数据
- list - 为什么论点的位置在缺点中很重要?