如何在TypeScript中检查字符串是否只包含白色或为空?

atmip9wb  于 2023-04-22  发布在  TypeScript
关注(0)|答案(4)|浏览(289)

我正在尝试使用TypeScript创建一个可以处理白色或空字符串的函数
我尝试了这个功能:

export const isEmpty = function(text: string): string {
  return text === null || text.match(/^ *$/) !== null;
};

但我得到Type 'boolean' is not assignable to type 'string'
使用TypeScript检查字符串是否为空或是否只包含白色和制表符的最佳方法是什么?

xj3cbfub

xj3cbfub1#

错误Type 'boolean' is not assignable to type 'string'是由于函数签名指示返回类型是string,而实际上返回的是boolean
定义应为:

export const isEmpty = function(text: string): boolean {
  return text === null || text.match(/^ *$/) !== null;
};

空白全覆盖

请注意,空白可以是以下任何一种:

  • 空格字符
  • 制表符
  • 回车符
  • 新行字符
  • 垂直制表符
  • 换页字符

要处理这些情况,正则表达式应该是:

/^\s*$/

该函数可以写成:

export function isEmpty(text: string): boolean {
  return text == null || text.match(/^\s*$/) !== null;
}
rt4zxlrg

rt4zxlrg2#

不需要正则表达式。简单地做

export const isEmpty = function(text: string): boolean{
  return (!text || text.trim() === "");
};
yquaqz18

yquaqz183#

你返回boolean,但你的函数需要string,所以按如下方式修改它:

export const isEmpty = function(text: string): boolean {
  return text === null || text.match(/^ *$/) !== null;
};

你也可以不设置预期的返回类型,让TypeScript编译器从实现中推断它是boolean

export const isEmpty = function(text: string) {
  return text === null || text.match(/^ *$/) !== null;
};
flseospp

flseospp4#

这里,简单的方法来检查字符串是否只包含白色。

export function isEmpty(text: string): boolean {
    return !(text && text.length > 0 && text.trim().length > 0);
}

相关问题