Я использую create-react-app
в своем приложении ReactJS с TypeScript, и я хотел бы импортировать модуль TypeScript / JavaScript, который я создал в другом проекте.
Модуль состоит из файл mymodule.js
, в котором код выглядит примерно так:
var mymodule;
(function (mymodule) {
var MyClass = /** @class */ (function () {
function MyClass() {
}
MyClass.myMethod = function () {
// code
};
return MyClass;
}());
mymodule.MyClass = MyClass;
})(mymodule || (mymodule = {}));
Затем есть файл определения типа mymodule.d.ts
, который выглядит так:
declare module mymodule {
class MyClass {
private static myMethod;
}
}
В моем create-react-app
проекта, я поместил эти два файла в папку /src/vendor
и хочу использовать модуль следующим образом:
import { MyClass } from '../vendor/mymodule';
...
Однако код Visual Studio (т.е. компилятор TypeScript) говорит
File '.../vendor/mymodule.d.ts' is not a module. ts(2306)
Когда я запускаю проект, переменные из модуля (например, класс MyClass
) равны undefined
.
Это может быть причиной ошибки: библиотека сгенерирована использование module: "AMD"
, но create-react-app
, кажется, обеспечивает module: "esnext"
.
Edit: Вот tsconfig. json проекта create-react-app
:
{
"compilerOptions": {
"target": "es5",
"lib": [
"dom",
"dom.iterable",
"esnext"
],
"allowJs": true,
"skipLibCheck": true,
"strict": true,
"forceConsistentCasingInFileNames": true,
"noEmit": true,
"jsx": "react",
"esModuleInterop": true,
"allowSyntheticDefaultImports": true,
"module": "esnext",
"moduleResolution": "node",
"resolveJsonModule": true,
"isolatedModules": true
},
"include": [
"src"
]
}