Typescript

虽然 acr 内置了全 api 的 ts 支持,但在使用时,还是有部分情况需要留意。基本上,我们都使用了 Declaration Merging 来完成扩展。

自定义类型

当我们新建了一个类型,而 ts 不能准确识别时,可以增加类似声明。

import Acr from 'acr';

declare module 'acr' {
    interface DateType extends Acr.Chain {
        min(value: Date, message?: string): this;
    }

    interface Acr {
        date(name: string): DateType;
        date(options?: Acr.ChainOptions): DateType;
    }
}

首先,我们定义了一个 date 类型,为 date 准备了一个验证方法 min,然后我们在 Acr 中声明 date 类型。由于 type 的参数可能含有多种结构,使用重载声明了两次。这样我们就能在验证中直接使用了。

扩展内置验证

很多时候我们可能更需要扩展内置类型的验证规则。这也非常简单:

declare module 'acr' {
    interface StringType {
        nickname(message?: string): this;
    }
}

Last updated