Как перенести оператор ES6 require () на машинопись - PullRequest
0 голосов
/ 21 ноября 2018

Мы смогли перенести весь код из проекта JS / ES6 в машинописный текст 3.x, но, похоже, мы не можем правильно портировать следующий файл.

Краткая версия файла выглядит следующим образом:

index.js (оригинал):

export const Log = require('./src/Log');
export const OidcClient = require('./src/OidcClient');

export default {
    Log,
    OidcClient
};

index.ts (перенесено):

import Log from './src/Log';
import { OidcClient } from './src/OidcClient';

export default {
    Log,
    OidcClient
};

Проблема, похоже, связана с оператором import LOG from './src/Log' против export const Log = require('./src/Log');.Если мы изменим исходный файл на использование export LOG from './src/Log';, то Log не будет определен в файле вызывающего скрипта, точно так же, как проблема, с которой мы сталкиваемся в перенесенной версии.

Intellisense, для исходного файла, заявляетчто экспортированный оператор OidcClient определен как (property) OidcClient: typeof import("c:/.../src/OidcClient").

В то время как перенесенная версия оператора OidcClient определена как (property) OidcClient: typeof OidcClient.

Как мы можем сделать эту работу изФайл TypeScript?

1 Ответ

0 голосов
/ 28 ноября 2018

Для полноты

Мы используем веб-пакет и создаем вывод в виде библиотеки с такими настройками вывода:

libraryTarget: 'var', library:'Oidc'

Таким образомклиент JS должен использовать модуль как: Oidc.Log.Error(message).Но проблема была в том, что Oidc.Log неопределен.

Подсказка

В отладчике браузера мы заметили, что Oidc определяется как Module, чточто мы и ожидали, но у него было таинственное свойство под названием default, в котором было все, что мы хотели.Хорошо, как удалить свойство default и применить все в его объекте части, модуле Oidc?

После 4 дней проб и ошибок мы нашли решение.

Решение

Документация и все, что мы могли найти, заявили, что мы должны использовать:

export default { Log, OidcClient }

В отчаянии мы наконец попытались удалить default ключевое слово, как в:

export { Log, OidcClient }

и угадайте, что?Это сработало !!

Нет больше загадочного свойства default, и все типы живут за счет модуля Oidc, как и ожидалось!

...