【发布时间】:2017-12-12 03:30:23
【问题描述】:
给定这个声明文件promise-retry/index.d.ts,它遵循TypeScript官方的module-function.d.ts格式:
编辑: 之前为此粘贴了错误的代码段(在下方仍然可见):
export = promiseRetry;
declare function promiseRetry(options: Partial<PromiseRetry.NodeRetryOptions>, fn: (retry: PromiseRetry.RetryFn, attempt: number) => Promise<any>): Promise<any>;
declare function promiseRetry(fn: (retry: PromiseRetry.RetryFn, attempt: number) => Promise<any>, options ?: Partial<PromiseRetry.NodeRetryOptions>): Promise<any>;
declare namespace PromiseRetry {
export interface NodeRetryOptions {
forever: boolean;
unref: boolean;
retries: number;
factor: number;
minTimeout: number;
maxTimeout: number;
randomize: number | false;
}
export type RetryFn = (err: any) => never;
}
我发现我无法通过以下语法导入 NodeRetryOptions 或 RetryFn:
import {NodeRetryOptions, RetryFn} from "promise-retry";
let options: NodeRetryOptions = { forever: false };
let retryFn: RetryFn = (err:any)=>{throw "Nobody responds on StackOverflow"};
...因为它引发编译错误:error TS2497: Module '"promise-retry"' resolves to a non-module entity and cannot be imported using this construct.
我还尝试了另一种语法:
declare module "promise-retry" {
export = promiseRetry;
function promiseRetry(options: Partial<PromiseRetry.NodeRetryOptions>, fn: (retry: PromiseRetry.RetryFn, attempt: number) => Promise<any>): Promise<any>;
function promiseRetry(fn: (retry: PromiseRetry.RetryFn, attempt: number) => Promise<any>, options ?: Partial<PromiseRetry.NodeRetryOptions>): Promise<any>;
namespace PromiseRetry {
export interface NodeRetryOptions {
forever: boolean;
unref: boolean;
retries: number;
factor: number;
minTimeout: number;
maxTimeout: number;
randomize: number | false;
}
export type RetryFn = (err: any) => never;
}
}
但是导入(以不同的方式)也失败了:
import * as PromiseRetry from "promise-retry";
let options: PromiseRetry.NodeRetryOptions = { forever: false };
let retryFn: PromiseRetry.RetryFn = (err:any)=>{throw "Nobody responds on StackOverflow"};
...抛出完全相同的编译器错误。
我已经阅读了我能找到的所有内容(包括此处的相关链接),但我无法正常工作。用特朗普的话来说,“没有人知道 TypeScript 导入会如此复杂。”
【问题讨论】:
标签: typescript types typescript-typings definitelytyped