打字稿:如何从 javascript 文件导入 class?

Typescript: how to import a class from a javascript file?

我愿意:

类似

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

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

这显然行不通,因为 ./myClass/index 的导入将找不到模块。

问题是,我尝试基于 this example 创建一个 ./myClass/index.d.ts 文件,但无论如何,我仍然遇到 错误:找不到模块 './myClass/index.js' 运行时错误:(

我觉得我在这里错过了一些打字稿基础知识,但我正在努力寻找一些清晰的资源。

有什么想法吗?

JavaScript中没有export default class。你可以做的就是像这样编写你的 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;

在 ts 文件中

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

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

在tsconfig.json文件中

  "allowJs": true