【问题标题】:Convert string to object in typescript?在打字稿中将字符串转换为对象?
【发布时间】:2018-06-07 01:24:19
【问题描述】:

我正在尝试使用接受字符串和数组的Is-Valid-Glob 验证全局表达式。需要验证的值是从文本字段接收的。问题是如果我们传递一个无效的 glob 表达式,它会产生错误的结果,因为每个输入都是作为字符串接收的。例如:- 如果用户输入 [](无效 glob),则将其作为字符串 '[]' 分配给模型变量,并在 '[]' 而不是 [] 值上完成验证。 有没有办法将值从字符串变量转换为对象变量(只有值不应该获取类型)并进行验证?

PS:我使用的是 Angular 2。

【问题讨论】:

  • 请考虑阅读asking help 以询问有效且优质的帖子
  • 与我们分享示例
  • 你试过使用 eval 吗?

标签: angular validation typescript


【解决方案1】:

我们可以使用 Object.assign({},object) 将字符串转换为对象。

【讨论】:

  • 不起作用。如果是字符串,它将字符串拆分为一个数组,其中每个元素都是该字符串中的单个字符。
【解决方案2】:

您可以使用 JSON.parse 将字符串转换为对象:

     var x = require('is-valid-glob');
     var y = '[]';//'foo/*.js' any user provided string
     // this will check if the user has provided an array object if so it 
     //will do a json.parse to remove the '' and then verify the string for a glob.
     x(y[1] !== '['?y:JSON.parse(y));

【讨论】:

  • 嗨@Vikramjit,我正在使用类似的黑客来达到目的。寻找更令人满意的解决方案。另外,需要为{}(无效的glob)添加case,在这种情况下会通过
【解决方案3】:

尝试使用 eval 它用于将字符串转换为等效对象,例如,

var a="[]";
console.log(a);// this will print "[]" as a string.
console.log(eval(a));// this will print an array object. With 0 length array object.

【讨论】:

  • 谢谢,@deepak,eval 在字符串的情况下不会有帮助。例如“foo/*.js”(有效的全局)。
猜你喜欢
  • 2017-02-11
  • 2020-11-21
  • 2021-04-10
  • 1970-01-01
  • 2020-12-15
  • 1970-01-01
  • 1970-01-01
  • 2020-05-22
  • 1970-01-01
相关资源
最近更新 更多