打字稿 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 -v 日志中找到模块“打字稿”