Почему код TypeScript больше не совместим после компиляции в JavaScript? - PullRequest
0 голосов
/ 17 мая 2018

Я считаю, что const greet = require('./greet'); эквивалентно import greet from './greet';.

Так что эти два файла должны работать вместе:

  1. greet.ts:

    export default ({ name, age }) => `Name: ${name}, Age: ${age}`;

  2. test.js:

    const greet = require("./greet"); greet({ name: 'Smith', age: 21 });

Но после компиляции greet.ts поворотовбыть:

"use strict";
exports.__esModule = true;
exports["default"] = (function (_a) {
    var name = _a.name, age = _a.age;
    return "Name: " + name + ", Age: " + age;
});

вместо:

module.exports = (function (_a) {
    var name = _a.name, age = _a.age;
    return "Name: " + name + ", Age: " + age;
});

Почему это?

Ответы [ 2 ]

0 голосов
/ 17 мая 2018

Если вы напишите export default, вы экспортируете участника с помощью клавиши "default".Вот как импортировать его с помощью CommonJS:

// test.js
const greet = require("./greet").default;
greet({ name: 'Smith', age: 21 });

Я предлагаю статью ES6 In Depth: Модули из Mozilla:

В этом нет ничего волшебногоэкспорт по умолчанию;это как любой другой экспорт, за исключением того, что он называется "default".

0 голосов
/ 17 мая 2018

Компилятор Typescript принимает --target как ES5 или ES6.Это зависит от параметров компилятора, которые вы установили для своего TS.Код всегда будет отличаться на этом основании, и вы не можете ожидать, что аналогичный JS будет получен.

Так что же предлагает TypeScript по сравнению с ES2015?Я чувствую, что добавляю наибольшее значение:

  1. Псевдонимы типа
  2. Интерфейсы
  3. Будущие функции ES2016 + (такие как аннотации / декораторы и асинхронность / ожидание)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...