Разница между `import x = require ('x')` и `const x = require ('x')` в машинописном тексте - PullRequest
0 голосов
/ 27 сентября 2018

Кажется, import x = require('x') - недопустимый синтаксис в es6, и в документации по машинописи нет четкого объяснения.

1 Ответ

0 голосов
/ 27 сентября 2018

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(…)

Как насчет разницы между import x from 'x' и import x = require('x')

Синтаксис import … from … соответствует стандарту ES6.Я предлагаю прочитать это введение в модули 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, , вы не сможете импортировать функцию или класс таким образом .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...