上下文:我正在尝试为library创建一个我不是作者的定义文件。当我使用我创建的定义文件时,TypeScript提到它无法找到定义文件。
我尝试过几件事,这是最后三件事:
首先尝试(inspired by a similar library d.ts):
declare class MessageFormat {
constructor(message: string);
compile: (messageSource: string) => Msg;
}
export type Msg = (params: {}) => string;
export default MessageFormat;
无法找到模块' messageformat'的声明文件。 ' node_modules / MessageFormat中/ LIB / messageformat.js'隐含地有一个“任何”的类型。
第二次尝试(from TypeScript's example to write d.ts)
declare class MessageFormat {
constructor(message: string);
compile: (messageSource: string) => MessageFormat.Msg;
}
declare namespace MessageFormat {
type Msg = (params: {}) => string;
}
export = MessageFormat;
无法找到模块' messageformat'的声明文件。 ' node_modules / MessageFormat中/ LIB / messageformat.js'隐含地有一个“任何”的类型。
第三次尝试(from a GitHub question)
declare module "messageformat" {
export type Msg = (params: {}) => string;
export interface MessageFormat {
new(message: string): any;
compile: (messageSource: string) => Msg;
}
}
不能使用' new'使用表达式,其类型缺少调用或构造签名。
代码:这三个试用版都在这个回购中:https://github.com/MrDesjardins/importdefinitionfiles
有人可以给我一个关于我做错的指针吗?
答案 0 :(得分:1)
这适用于我,在项目中的某个d.ts文件中,文件名不相关。 DO 确保“messageformat”是节点模块的实际名称,否则您的打包器将失败。
declare module "messageformat" {
type Msg = (params: {}) => string;
class MessageFormat {
constructor(locale: string | string[] | Object);
compile(messageSource: string): Msg;
}
export = MessageFormat;
}
现在,在其他一些模块中:
import MessageFormat from "messageformat";
const mf = new MessageFormat("en");
const thing = mf.compile("blarb");