每个人都喜欢TypeScript。它“解决”了JS的很多问题,它是JS的“超集”,它会让你的代码更不容易出错,读起来更愉快。使用TypeScript有很多充分的理由,但我会给你7个不使用TypeScript的充分理由。风险哇。如果TypeScript添加类型定义并在编译时检查它们会有什么风险?IDE集成是否还会警告您任何类型不匹配?正因为如此。TypeScript仅在编译时检查类型,并且仅在可用时检查类型。任何网络调用、系统库、特定于平台的API和未类型化的第三方库都无法与TypeScript通信。当您习惯于检查类型并且不必完全了解代码和平台时,错误和错误就会出现。使用JS,你不需要对类型做任何假设,你可以检查变量的具体值以确保它是你所期望的。或者,如果在这种情况下您不关心它的类型,则不必关心。在TS中,你依赖编译器为你做这件事,但它只能做这么多检查。您可以将两者结合起来,那有什么意义呢?如果您打算花时间编写定义,然后花时间编写代码以确保这些定义在运行时得到维护,那么为什么首先要使用它们呢?太乱了。一个悖论:本应为代码库带来清晰度和可读性的语言反而掩盖了它。为了说明我的意思,请查看我在流行的开源库中找到的一些示例://TODO:dothismoreelegantly;((currentReduceraasunknown)asReducer)=nextReducer这是来自Redux库,所有这4行代码all将nextReducer分配给currentReducer。//HACK:SinceTypeScriptinheritsstaticpropertiestoo,wehaveto//fightagainstTypeScriptheresoSubjectcanhaveadifferentstaticcreatesignature/***CreatesanewcoldObservablebycallingtheObservableconstructor*@statictrue*@ownerObservable*@methodcreate*@param{Function}subscribe?thesubscriberfunctiontobepassedtotheObservableconstructor*@return{Observable}anewcoldobservable*@nocollapse*@deprecatedusenewObservable()instead*/staticcreate:Function=(subscribe?:(subscriber:Subscriber)=>TeardownLogic)=>{returnnewObservable(subscribe);}下一个示例来自RxJS库。我不了解你,但如果我必须使用可以帮助我的工具,那么我认为它不是一个好工具。它不能解决问题据说TypeScript可以解决JavaScript的问题。但事实并非如此。动态类型在JavaScript中从来都不是问题,但许多其他陷阱,如NaN===NaN为假,分号是可选的或非可选的,换行符将对象定义更改为作用域,使用语法糖代替OOP确实是一个问题。TypeScript没有解决这些问题,而是引入了另一个标准,进一步分化了JS社区。即使假设缺少输入JS是一个问题,TS也无法修复它。你知道Java、C、C#和其他编译语言吗?它们可以在编译时和运行时安全地保证强类型。解释型语言做不到这一点。它不是一个超集,它是一个子集TypeScript是编译成JavaScript的东西,根据定义它不能是一个超集。它限制了您可以使用JavaScript执行的操作并掩盖了它的优势,同时提供了一种错误的安全感。如果你真的想成为一名优秀的开发人员,不要通过撒谎来安慰自己,而是要尝试了解JavaScript的真正能力以及它的灵活性。它是开源的,这就是使用自称开源的TypeScript的所有原因。没错,TS编译器是在MIT许可证下发布的。但它仍然被微软控制(垄断),其开源进步只不过是营销。不要将开源与民主混淆:Microsoft仍然可以自由地使用TS做任何您想做的事情,您在这里观看。另一方面,JS由一个国际委员会管理,未经社区批准,任何内容都不会改变。但是大公司使用它……我不敢相信有人认为这是一个原因。大公司还使用遗留代码库、进行税务欺诈和歧视女性。为什么TypeScript突然成为了一个很好的例子?但它有更多的功能......不再是了。的确,2012年TS刚出来的时候,它有类似类的特性,但在JS中仍然没有。但是从那时起JS已经走了很长一段路,现在TS正在努力跟上。如果JS中缺少任何内容,可以使用babel插件来完成。原文链接:https://medium.com/javascript-in-plain-english/7-really-good-reasons-not-to-use-typescript-166af597c466)