打字稿:如何从 javascript 文件导入 class?
Typescript: how to import a class from a javascript file?
我愿意:
- 导入定义 class 的 js 文件:
./myClass/index.js
- 在某处声明
MyClass
的public方法(在index.ts或指定的声明文件中,我真的不知道该怎么做)
- 有一个公开 class 的打字稿文件:
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' 运行时错误:(
我觉得我在这里错过了一些打字稿基础知识,但我正在努力寻找一些清晰的资源。
有什么想法吗?
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
我愿意:
- 导入定义 class 的 js 文件:
./myClass/index.js
- 在某处声明
MyClass
的public方法(在index.ts或指定的声明文件中,我真的不知道该怎么做) - 有一个公开 class 的打字稿文件:
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' 运行时错误:(
我觉得我在这里错过了一些打字稿基础知识,但我正在努力寻找一些清晰的资源。
有什么想法吗?
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