当我使用tsc --declaration或tsconfig.json声明生成我的定义文件“.d.ts”时,生成文件不包括
声明模块“mymodule”{... }
这对“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顶部获取'declare module'mymodule“{......}”?或者如何在没有此声明的情况下使tslint工作?
答案 0 :(得分:1)
更多信息:
我需要使用模块&#34; commonJS&#34;对于我的模块定义API(不能使用系统)
我有这些文件:
file1.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);
});
}
file2.ts:
export function isNumberArray(param: number[] | undefined): param is number[] {
if (typeof param === "undefined") {
return (false);
}
if (!Array.isArray(param)) {
return false;
}
for (const i of param) {
if (typeof i !== "number") {
return false;
}
}
return true;
}
index.ts:
export * from "./file1.ts";
export * from "./file2.ts";
=&GT;我想生成一个定义文件index.d.ts,如下所示:
declare module "mymodulename" {
export function delay(timeout: number): Promise<boolean>;
export function isNumberArray(param: number[] | undefined): param is number[];
}
答案 1 :(得分:0)
您需要指定--module system
和--out
以获取您要查找的输出:
鉴于您的文件位于文件&#34; mymodule.ts&#34;,以下命令
tsc mymodule.ts --lib 'es6' --declaration -t es6 -module system -out mymodule.js
将生成:
declare module "mymodule" {
export function delay(timeout: number): Promise<boolean>;
}