【发布时间】:2021-08-04 19:04:12
【问题描述】:
我正在尝试创建一个转换函数,其中接收带有数字的字符串作为输入,但是当使用正则表达式函数“replace()”时它无法识别它。
有人知道我如何在 IData 类型中声明“replace()”吗?
interface IData{
data:string | {
replace: (()=>number),
};
}
class Cast{
castString(data:IData){
return data.toString();
}
castNumber(data:IData){
return data.replace(/\D+/g, '');
}
}
export default new Cast;
【问题讨论】:
-
您能详细说明一下吗?您的输入和预期输出是什么?
-
如果您在输入中使用字符串类型,那么已经有一个字符串类型的内置替换功能。为什么需要创建一个自定义的?
-
castNumber 上的输入将是“34bbb5”,结果应该是 345。“数据”是字符串类型,但是当使用正则表达式“替换”时,它会抛出属性“替换”不存在在类型 'IData'.ts(2339)
-
通过声明字符串而不创建接口解决,但我还是很好奇如何在接口的属性中声明属性
-
在
castNumber()中,data参数的类型为IData。该类型没有replace成员;它只知道有一个data成员。所以你需要data.data.replace()才能在这里找到解决方案。但由于data.data是string或其他具有replace方法且不需要参数并返回number的类型,因此您需要在调用它之前进行进一步测试。我很困惑。请考虑修改代码以构成适合放入独立 IDE 的minimal reproducible example,例如The TypeScript Playground (link)。
标签: javascript reactjs regex typescript replace