C# 验证JavaScript中的字符串和类型转换

C# 验证JavaScript中的字符串和类型转换,c#,javascript,C#,Javascript,我来自C#背景。我目前正在用JavaScript进行一些开发。我有一些传入的值。然而,我不确定如何“最好”地验证和转换它们。例如,在C#中,我有如下代码: Guid id = Guid.Empty; if (Guid.TryParse(getIDString(), out id) == false) throw new Exception("Invalid GUID"); int year = 0; if (Int32.TryParse(getYearString(), out year)

我来自C#背景。我目前正在用JavaScript进行一些开发。我有一些传入的值。然而,我不确定如何“最好”地验证和转换它们。例如,在C#中,我有如下代码:

Guid id = Guid.Empty;
if (Guid.TryParse(getIDString(), out id) == false)
  throw new Exception("Invalid GUID");

int year = 0;
if (Int32.TryParse(getYearString(), out year) == false)
  throw new Exception("Invalid Year");

if (String.IsNullOrWhiteSpace(getStringValue()))
  throw new Exception("String is required.");

DateTime createdOn = DateTime.UtcNow;
if (DateTime.TryParse(getDateString(), out createdOn) == false)
  throw new Exception("Invalid Creation Date");

decimal? latitude = null;
decimal temp = 0;
if (Decimal.TryParse(GetLatitudeString(), out temp) == false)
  throw new Exception("Invalid latitude");
else
  latitude = temp;
我觉得将代码转换为JavaScript有两个不同的问题:1。解析字符串和2。类型转换

在JavaScript中,我不知道如何执行
String.IsNullOrEmpty()
。我认为在lodash中会有类似的功能。然而,我没有看到一个。在我理解如何最好地编写这段代码的过程中,整个null与undefined的关系有点纠结。即使如此,我也不确定在JavaScript中尝试将字符串中的值转换为有意义的数据类型的推荐方法是什么。如果转换不起作用,我想抛出一个错误。然而,我不知道如何在JavaScript中做到这一点


谢谢你的帮助

Javascript没有静态类型。如果您完全控制代码及其使用方式,这可能不是问题。但是如果您的代码是从外部调用的,并且您依赖某些变量来拥有某些类型,那么您可能必须使用
typeof variable
检查它们

  • GUID:javascript中没有GUID这样的类型,但可以使用正则表达式检查GUID

  • int/decimal:有
    parseInt()
    parseFloat()
    函数。然后您应该使用
    isNaN
    (不是数字)进行检查

  • 字符串:一个非常简单的检查可能是
    !变量
    ,对于未定义、null和0,该变量将返回true

  • 日期:您可以检查
    新日期(变量).getTime()
    是否为NaN

  • 异常处理/抛出:Javascript像c#一样具有try/catch和throw

  • undefined vs.null:除非处于严格模式,否则不需要预先声明变量。未定义表示变量未在当前范围内定义。Null表示声明了它,但为其分配了Null值


  • int
    decimal
    片段不能直接翻译成JavaScript,因为只有一个
    数字
    类型对我来说
    ==false
    似乎是C的一种奇怪用法。