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

时间:2016-11-07 10:55:12

标签: javascript typescript typescript-typings typescript2.0

我想:

  • 导入定义类的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的导入将找不到模块。

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

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

有什么想法吗?

2 个答案:

答案 0 :(得分: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 :(得分: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