打字稿 tsc --declaration

Posted

技术标签:

【中文标题】打字稿 tsc --declaration【英文标题】:Typescript tsc --declaration 【发布时间】:2018-10-10 16:34:24 【问题描述】:

当我使用 tsc --declaration 或 tsconfig.json 声明为 true 生成定义文件“.d.ts”时,生成文件不包含

声明模块“我的模块”...

这对“vscode”来说不是问题,但“tslint”似乎有问题并警告我“不安全地使用'any'类型的表达式”。例如文件“test.ts”:

type PromiseResolve<T> = (value?: T | PromiseLike<T> | undefined) => void;


export async function delay(timeout: number): Promise<boolean> 
    return new Promise((resolve: PromiseResolve<boolean>): void => 
        setTimeout(() =>  resolve(true); , timeout);
    );

会生成

export declare function delay(timeout: number): Promise<boolean>;

但我需要:

declare module "mymodule"

export declare function delay(timeout: number): Promise<boolean>;

如何在生成的 .d.ts 顶部获得“声明模块“mymodule”……'?或者如何在没有此声明的情况下使 tslint 工作?

【问题讨论】:

【参考方案1】:

您需要指定--module system--out 以获得您要查找的输出:

鉴于您的文件在文件“mymodule.ts”中,以下命令

tsc mymodule.ts --lib 'es6' --declaration -t es6 -module system -out mymodule.js

将生成:

declare module "mymodule" 
    export function delay(timeout: number): Promise<boolean>;

【讨论】:

感谢您的回复。这个作品!但我忘记指定:我使用 Nodejs,所以我需要 commonJS 模块,并且我有多个具有不同功能的文件。所以 mymodules.js 包含 multi => declare module "file1" function of file 1, declare module "file2" function of file 2,... 有没有办法用 commonJs 模块和多个文件来做到这一点,但只有一个声明模块声明模块“mymodule”文件1的功能,文件2的功能? 我不确定我是否理解你的后续问题,你能以某种方式给出完整的例子吗? 提供更多信息

以上是关于打字稿 tsc --declaration的主要内容,如果未能解决你的问题,请参考以下文章

打字稿 tsc --declaration

无法从 <路径> 但 tsc -v 日志中找到模块“打字稿”

将打字稿更新为v3.2.1,SDK文件夹中没有tsc.exe

打字稿打字,打字文件夹是啥

错误:打字稿任务检测没有为以下配置贡献任务

用于构建打字稿的 NPM 脚本不起作用