字符串”不可分配给“字符串”类型

时间:2020-05-14 16:11:16

标签: angular typescript

我正在尝试编写一个NumericHelper.ts,它返回带有可配置分数位数的正则表达式。

export class NumericHelper
{
    public static  GET_DECIMAL_PATTERN: string = (fractionDigits: number = 2) => `^([0-9]*(?:[\.|,| ][0-9]{0,${fractionDigits}})?)?$`;
}

这将返回以下错误,除非将其强制转换回any。但为什么?该函数返回字符串。

类型'(fractionDigits ?: number)=>字符串'不可分配给 输入'string'.ts(2322)

2 个答案:

答案 0 :(得分:1)

GET_DECIMAL_PATTERN不是string类型,它是返回字符串的函数:

export class NumericHelper
{
    public static GET_DECIMAL_PATTERN: Function = (fractionDigits: number = 2) => `^([0-9]*(?:[\.|,| ][0-9]{0,${fractionDigits}})?)?$`;
}

答案 1 :(得分:1)

您将类型设置在错误的位置

class NumericHelper
{
    public static GET_DECIMAL_PATTERN: Function = // function here
      (fractionDigits: number = 2): string => // string here
        `^([0-9]*(?:[\.|,| ][0-9]{0,${fractionDigits}})?)?$`;
}

我个人认为没有粗箭头的情况会更干净

class NumericHelper {
    public static GET_DECIMAL_PATTERN (fractionDigits: number = 2): string {
        return `^([0-9]*(?:[\.|,| ][0-9]{0,${fractionDigits}})?)?$`
    }   
}

Seeing it in action with the JavaScript output