Экспорт пространств имен в ES6 + - PullRequest
1 голос
/ 13 апреля 2020

Я из мира Java и пытаюсь создать ванильное JS (ES2018) приложение с типами, задокументированными в JSDO C, затем я использую компилятор TypeScript, чтобы получить хорошие файлы определений, которые я можно связать с моим приложением. У меня есть только два основных файла: client. js (содержит класс, экспортируемый по умолчанию) и константы. js (объект, экспортируемый по умолчанию с некоторыми константами), оба в каталоге src /. Я хочу показать эти два в общем пространстве имен, поэтому мой индекс. js выглядит следующим образом:

import XApiClient from 'src/brokers/xtb/x_api_client';
import {Constants} from 'src/brokers/xtb/x_api_constants';

/**
 * @namespace
 * @property {Constants} Constants
 * @property {XApiClient} XApiClient
 */
const XApi = {Constants: Constants, Client: XApiClient};
export default XApi;

Весь этот проект затем используется в другом месте через npm + git, но в этом новом проекте Компилятор Typescript не распознает тип XApi.XApiClient. В настоящее время я достаточно отчаялся, чтобы подумать о том, чтобы бросить программирование и позаботиться о козлах на холмах.

1 Ответ

0 голосов
/ 14 апреля 2020

В конце мне просто пришлось прикусить пулю и перенести все в Typescript, в конце у меня также есть дополнительный шаг парсинга тегов JSDO C для получения файлов определений. Кажется, ошибки были из-за неправильной конфигурации tsconfig.

FWIW, вот мой tsconfig (я использую gts в качестве базовой линии, также обратите внимание, что я использую webpack для упаковки всего в один файл):

{
  "extends": "./node_modules/gts/tsconfig-google.json",
  "compilerOptions": {
    "outDir": "js/",
    "rootDir": "src/",
    "sourceMap": true,
    "moduleResolution": "node",
    "module": "commonjs",
    "target": "ES2018",
    "lib": ["dom","dom.iterable", "ES2018"],
    "noImplicitAny": true,
    "allowSyntheticDefaultImports": true
  },
  "include": ["src/**/*.ts", "test/**/*.ts"],
  "exclude": ["dist", "node_modules"]
}
...