将@types中的类型分配给本地代码?

时间:2018-07-01 04:50:24

标签: javascript typescript

我有一个委托给Validatorjs的方法,如下所示:

  /**
   * Checks if the string is a mobile phone number (locale is one of ['zh-CN', 'zh-TW', 'en-ZA', 'en-AU', 'en-HK',
   * 'pt-PT', 'fr-FR', 'el-GR', 'en-GB', 'en-US', 'en-ZM', 'ru-RU', 'nb-NO', 'nn-NO', 'vi-VN', 'en-NZ']).
   * If given value is not a string, then it returns false.
   */
  export function isMobilePhone(value: string, locale: string): boolean {
    return (
      typeof value === "string" && vjsIsMobilePhone(value, locale)
    );
  }

VSCode为locale参数呈现以下错误:

  

[ts]类型'string'的参数不能分配给'MobilePhoneLocale'类型的参数。   (参数)语言环境:字符串

MobilePhoneLocale类型来自@types/validator。如果我将MobilePhoneLocale分配给locale(而不是使用字符串),则该方法如下所示:

    /**
     * Checks if the string is a mobile phone number (locale is one of ['zh-CN', 'zh-TW', 'en-ZA', 'en-AU', 'en-HK',
     * 'pt-PT', 'fr-FR', 'el-GR', 'en-GB', 'en-US', 'en-ZM', 'ru-RU', 'nb-NO', 'nn-NO', 'vi-VN', 'en-NZ']).
     * If given value is not a string, then it returns false.
     */
    export function isMobilePhone(value: string, locale: MobilePhoneLocale): boolean {
      return (
        typeof value === "string" && vjsIsMobilePhone(value, locale)
      );
    }

但是现在ts会出现此错误:

  

[ts]找不到名称'MobilePhoneLocale

上述功能应如何实现locale的类型?

为此也创建了一个@types/validator github issue

1 个答案:

答案 0 :(得分:1)

RequestSpecBuilderResponseBuilder命名空间下声明,导入setContentType后即可访问。您将其称为MobilePhoneLocale。这是一个使用ValidatorJS的示例:

validator