打字稿:如何从javascript文件导入一个类?

问题描述 投票:8回答:2

我想要 :

  • 导入定义类的js文件:./myClass/index.js
  • 在某处声明MyClass的公共方法(在index.ts或指定的声明文件中,我真的不知道该怎么做)
  • 有一个暴露类的打字稿文件: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/index.d.tsthis example文件,但无论如何,我仍然有一个错误:在运行时找不到模块'./myClass/index.js'错误:(

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

有任何想法吗 ?

javascript typescript typescript-typings typescript2.0
2个回答
10
投票

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");

1
投票

在你的javascript文件的末尾,写下这个

exports.MyClass = MyClass;

在ts文件中

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

要么

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

在tsconfig.json文件中

  "allowJs": true
© www.soinside.com 2019 - 2024. All rights reserved.