我有一些导入messageformat
模块的Javascript代码。这个模块可以这样使用:
const MessageFormat = require('messageformat');
const mf = new MessageFormat("en-US");
const text = mf.compile(...);
此模块导出一个类,但它没有一个打字文件。我创建了以下打字文件:
declare module "messageformat" {
export class MessageFormat {
constructor(locale: string);
public compile(messageString: string): string;
}
}
在我的Typescript代码中,我现在将其用作:
import { MessageFormat } from "messageformat";
const mf = new MessageFormat("en-US");
const text = mf.compile(...);
不幸的是,这不会生成new MessageFormat("en-US")
,但会生成失败的new messageformat_1.MessageFormat("en-US")
。我也尝试了以下方法:
declare module "messageformat" {
export default class MessageFormat {
constructor(locale: string);
public compile(messageString: string): string;
}
}
在我的Typescript代码中,我现在将其用作:
import MessageFormat from "messageformat";
const mf = new MessageFormat("en-US");
const text = mf.compile(...);
但这会编译为new messageformat_1.default('en-US')
,这也是不正确的。如何创建打字文件(以及如何导入模块)以便构造正确的类?
答案 0 :(得分:0)
此答案基于this answer。
看起来以下方法有效:
declare module "messageformat" {
class MessageFormat {
constructor(locale: string);
public compile(messageString: string): string;
}
export = MessageFormat;
}
不幸的是,我不能再使用import
语句,但以下代码似乎有效:
import MessageFormat = require("messageformat");
const mf = new MessageFormat("en-US");
const text = mf.compile(...);
虽然我认为import MessageFormat = require("messageformat")
看起来有点尴尬,但它确实有效并且可以使用所有类型。