为什么会产生错误:“初始化程序类型不能分配给变量类型Partial< ...>”

时间:2017-07-07 09:55:05

标签: typescript types typescript-typings

我正在尝试为流行的retry npm包声明TS类型。此包使用一个对象来指定其选项,所有字段都是可选的。鉴于此,我认为这是Partial<T>的一个用例(当然可以辩论)。

export type milliseconds = number;

// Details at: https://www.npmjs.com/package/retry
export declare interface NodeRetryOptions {
    forever: boolean;
    unref: boolean;
    retries: number;
    factor: number;
    minTimeout: milliseconds;
    maxTimeout: milliseconds;
    randomize: number | false;
}

export let MY_EXPONENTIAL_BACKOFF_OPTIONS: Partial<NodeRetryOptions> =
{ forever: true, factor: 2, minTimeout: 7*1000, maxTimeout: 180*1000, randomize: 1.5 };

这会产生编译时错误:Initializer type {forever: boolean, factor: number, minTimeout: number, maxTimeout: number, randomize: number} is not assignable to variable type Partial<NodeRetryOptions>

只能通过转换对象as Partial<NodeRetryOptions>或手动将接口上的每个字段更改为可选项来解决。为什么编译器会抱怨这个?

编辑: 使用TypeScript 2.4.0。

0 个答案:

没有答案