【问题标题】:what is the alternative of angular.isString() in angular2?angular2 中 angular.isString() 的替代方法是什么?
【发布时间】:2016-10-08 06:46:44
【问题描述】:

我正在 angular2 中开展一个项目,很想知道是否有任何方法可以在我的 angular2 应用程序中使用 angularjs 功能。

例如

在angularjs中,我曾经做过以下操作:

  1. angular.isString(value)
  2. angular.isArray(value)
  3. angular.copy(value)

我只想知道是否有任何模块或包可以帮助我在angular2/typescript中进行上述操作?

提前致谢。

【问题讨论】:

    标签: javascript angularjs typescript angular


    【解决方案1】:

    只需使用 JavaScript:

    • 是字符串

    简单

      typeof foo === 'string'
    
    • angular.isArray(value)

    简单

    Array.isArray(value)
    
    • angular.copy(值)

    简单

    Object.assign({},value)
    

    【讨论】:

    • Object.assign 不提供对象的深度复制,有任何输入吗?
    • @BhushanGadekar 我同意巴厘岛的建议
    • @basarat 谢谢,loadash 也提供 isObject 方法吗?
    【解决方案2】:

    除了copy,angular2 实际上提供了"@angular/common/src/facade/lang"isStringisArray(以及更多)函数。要使用这些,您必须像这样导入它们:

    import {isString, isArray} from "@angular/common/src/facade/lang";
    

    但是,这些函数的主体与提到的 basarat 相同,并且不再提供此导入。 Sooo,使用上面的解决方案:)

    【讨论】:

    • 顺便提一下:不鼓励从src导入。它被认为是包的私有实现。
    • @GünterZöchbauer 谢谢!我确实为这些函数创建了自己的包装器,因为我想的太多了,但我从来没有找到任何说明你不应该直接使用这些函数的文档
    • @GünterZöchbauer 不错的补充,我竖起大拇指支持 ;)
    • 物有所值;该代码“@angular/common/src/facade/lang”不在我通过 NodeJS 安装的 Angular 4 目录中。
    • @PierreDuc 我发现讽刺了吗?这是在寻找不同的问题时出现的。我正在寻找一个 isObject() 函数。我最终使用了import {isObject} from "rxjs/util/isObject";;我怀疑isString和isArray有类似的功能,但没看过。
    【解决方案3】:

    您可以使用lodash-es(对 lodash 的 ES 模块导入支持)执行以下操作:

    import { isString } from 'lodash-es';
    
    console.log(isString('') === true);
    

    我更喜欢这个而不是typeof foo === 'string' 的公认答案,因为字符串文字容易出错并且更难缩小。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-09-06
      • 1970-01-01
      • 2022-11-13
      • 2015-01-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多