您好,欢迎来到12图资源库!分享精神,快乐你我!我们只是素材的搬运工!!
  • 首 页
  • 当前位置:首页 > 开发 > WEB开发 >
    面试怼回去!我不用TypeScript的7个很好的理由
    时间:2020-08-11 12:07 来源:网络整理 作者:网络 浏览:收藏 挑错 推荐 打印

    大家都喜欢TypeScript。它“处置”了JS的很多成绩,它是JS的“超集”,它会让你的代码不容易出错,而且阅读起来很愉快。运用TypeScript有很多好的理由,但我要给你7个真正好的理由不要运用。

    面试怼回去!我不用TypeScript的7个很好的理由

    有风险

    哗,怎样会有风险呢?假设TypeScript添加类型定义并在编译时反省它们,这怎样能够有风险?以及IDE集成会正告你任何类型不婚配?正是由于如此。TypeScript仅在编译时反省类型,并且仅反省可用的类型。任何网络调用,系统库,特定于平台的API和无类型的第三方库都无法与TypeScript通讯。当你习气了对类型停止反省,不用完全了解代码战争台,错误和bug就会表现出来。

    运用JS,你对类型不做任何假定,你反省变量的详细值,以确保它是你所希冀的。或许,假设你不关心它的类型,在这种特殊状况下,你不关心。在TS中,你依托编译器为你做,但它只能反省这么多。你可以把这两种方式结合起来,但那有什么意义呢?假设你会花时间写定义,然后花时间写代码来确保这些定义在运转时失掉维护,那为什么一末尾就要有这些定义呢?

    太乱了

    另一个悖论是:言语本应该为代码库带来明晰和可读性,但它却使代码库变得模糊了。为了阐明我的意思,请查看一些我在盛行的开源库中找到的示例:

    // TODO: do this more elegantly 

    ;((currentReducer as unknown) as Reducer< 

      NewState

      NewActions 

    >) = nextReducer 

    这是来自Redux库的,一切这4行代码都将 nextReducer 分配给 currentReducer。

    下一个例子假设来自RxJS库。

    // HACK: Since TypeScript inherits static properties too, we have to 

    // fight against TypeScript here so Subject can have a different static create signature 

    /** 

     * Creates a new cold Observable by calling the Observable constructor 

     * @static true 

     * @owner Observable 

     * @method create 

     * @param {Function} subscribe? the subscriber function to be passed to the Observable constructor 

     * @return {Observable} a new cold observable 

     * @nocollapse 

     * @deprecated use new Observable() instead 

     */ 

    static create: Function = <T>(subscribe?: (subscriber: Subscriber<T>) => TeardownLogic) => { 

      return new Observable<T>(subscribe); 

    我不知道你是怎样想的,但假设我不得不打一个本应协助我的工具,我不以为这是一个好工具。

    它不能处置成绩

    听说TypeScript可以处置JavaScript的成绩,但理想并非如此。静态类型化在JavaScript中历来都不是成绩,但是其他很多缺点,比如 NaN === NaN 是false的,分号是可选的还是不可选的,一个换行符把一个对象定义改成了作用域,语法糖替代OOP,这些确实是成绩。TypeScript并没有处置这些成绩,而是引入了另一个标准,进一步分化了JS社区。

    即使假定JS中缺少类型是一个成绩,TS也无法处置。你知道是什么吗?Java、C、C#和其他编译言语。它们可以在编译时和运转时安全地保证强类型,解释言语就是不能做到这一点。

    它不是超集,而是子集

    TypeScript是编译成JavaScript的东西,从定义上看,它不能够是一个超集。它限制了你运用JavaScript所能做的事情,掩盖了它弱小的一面,同时提供了一种虚伪的安心感。假设你真的想成为一名优秀的开发者,就不要满足于安逸的谎言,要试着去了解JavaScript的真正威力和它的灵敏性。

    它是开源的,仅此而已

    运用TypeScript的许多缘由都表明它是开源的。确实,TS编译器是在MIT容许下分发的。但它依然被微软这个垄断巨头所控制,它在开源方面的提高只不过是一种营销手腕。不要把开源和民主混为一谈,微软依然可以自在地对TS做任何事情,而JS则是由一个国际委员会管理,没有经过社会的认可,是不会改动任何东西的。

    但是大公司运用它…

    我不敢置信有人以为这是一个缘由。大公司还运用传统的代码库,停止税务欺诈,歧视妇女。为什么突然间他们运用TypeScript就是一个好例子?

    但是它具有更多功用……

    如今不一样了。确实,2012年TS刚推出的时分,它有类等功用,在JS中还是没有的。但是JS从那时起曾经有了长足的提高,如今TS也在努力的追逐。假设JS有什么缺失,有一个babel插件可以做到。

    (责任编辑:admin)