Typescript: как импортировать класс из файла javascript?

хотелось бы :

  • импорт JS-файла, определяющего класс:./myClass/index.js
  • объявить публичные методы MyClass где-то (в индекс.ts или указанный файл объявления, я действительно не знаю, как это сделать)
  • есть файл typescript, который предоставляет класс:index.ts

что-то вроде

// index.ts
import MyClass from './myClass' // or require, or anything that would work
export {MyClass}

и

// myClass/index.js
export default class MyClass {
  ...
}

это, очевидно, не работает, так как импорт ./myClass/index не найти модуль.

дело в том, что я пытался создать на основе , но несмотря ни на что, у меня еще есть ошибка: не удается найти модуль '.индекс /класса MyClass/.js' ошибка во время выполнения :(

Я чувствую, что пропустил некоторые основы машинописи здесь, но я стремлюсь найти некоторые четкие ресурсы.

какие идеи ?

2 ответов


нет export default class в JavaScript. Что вы можете сделать, так это написать свой JS-файл. myClass/index.js

"use strict";
class MyClass {
  hello(name) {
    console.log(`Hello ${name}`);
  }

}
exports.default = MyClass;

создайте для него определения типов. myClass/index.d.ts

export default class MyClass {
  hello(name: string): void;
}

затем вы можете импортировать его в свой TypeScript, как это.

/// <reference path="./myClass/index.d.ts" />
import MyClass from "./myClass";

const my = new MyClass();
my.hello("Stack Overflow");

в конце вашего файла javascript , напиши это

exports.MyClass = MyClass;

в файлы ТС

import * as  IzendaSynergy  from './izenda/izenda_ui.js';

или

import { IzendaSynergy } from './izenda/izenda_ui.js';

в tsconfig.файл json

  "allowJs": true