TypeScript定义文件找不到.d.ts

时间:2018-04-06 16:46:34

标签: typescript typescript-typings typescript2.0

上下文:我正在尝试为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

有人可以给我一个关于我做错的指针吗?

1 个答案:

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