typescript - typescript 中 `import x = require(' x' )` and ` const x = require ('x' )` 之间的区别

标签 typescript ecmascript-6

好像import x = require('x')是 es6 中的无效语法, typescript 文档中没有明确的解释。

最佳答案

Q1:import … = require(…)const … = require(…)
在运行时(或一旦代码被编译),两种语法之间没有区别,第一个被转换为第二个。

import :

import x = require('x')

此语法特定于 TypeScript。常数x是由在导入的包或包中定义的某些类型给出的类型 @types/x .

const :
const x = require('x')

这是 JavaScript 中的有效语法,当然也适用于 TypeScript。在 TypeScript 中,常量 x类型为 any .

Q2:import … from …import … = require(…)

How about difference between import x from 'x' and import x = require('x')



语法 import … from …来自 ES6 标准。我建议阅读 this introduction ES6 模块以及如何导入和导出它们。

但是,简而言之,语法 import x from 'x'相当于:
import x = require('x').default

(请注意 .default 成员。)

如何转换 import … = require(…)到 ES6 语法

ES6 标准规定所有导出的成员都可以导入到单个“命名空间对象模块”中。

那么最接近的标准语法 import x = require('x')是:
import * as x from 'x'

此语法目前适用于 TypeScript 转译,因为代码已转换为 const … = require(…) .

但是:此语法应仅在标准定义的上下文中使用。因为,当你的代码将使用原生版本的 ES6 模块时,您将无法以这种方式导入函数或类 .

关于typescript - typescript 中 `import x = require(' x' )` and ` const x = require ('x' )` 之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52534910/

相关文章:

javascript - 我可以知道为什么在 React 中有时需要在箭头函数之前添加 const/var/let 吗?

javascript - 循环通过react来设置状态

javascript - 如何在 ES6 中使用其值过滤对象

javascript - AngularJS:注入(inject) $timeout 在指令中不可用

angular - 隐藏显示按钮

typescript :为什么这个微不足道的泛型函数的行为不像它的非泛型等价物?

javascript - jhipster react 形式 onChange state 类型 '{ [x: number]: any; }' 的参数不可分配

typescript - react Redux TS : TypeScript complains about a connect() call

typescript - 如何将 VS Code 的大纲同步到编辑器中的当前位置

javascript - ES2015中有没有一种方法可以直接访问对象属性而不检查未定义?