我正在使用 Angular 9,并且只要在构建目标中检测到循环依赖项,我希望我的构建就会失败。
当我使用 Angular 6 及更低版本时,我只是将循环依赖 Webkack 插件(https://www.npmjs.com/package/circular-dependency-plugin)添加到我的 webpack 配置中,并且运行良好。但是,在 Angular 9 中,我无权访问用于构建目标的构建器的 wepack 配置。我不想使用 custom:webpack 构建器。
你知道如何实现吗?我知道文件showCircularDependencies中的密钥angular.json,但它只是用于打开和关闭警告。
这是 TypeScript 中缺乏的功能还是经过深思熟虑的,如果条件逻辑被包装到单独的函数中,TS 编译器无法推断(然后缩小)参数的类型?我想到的是 TS 编译器在这种情况下给我的错误:
\n\nfunction isString(s) {\n return typeof s === 'string';\n}\n\nfunction toUpperCase(x: unknown) {\n if(isString(x)) {\n x.toUpperCase(); // \xe2\x9a\xa1\xef\xb8\x8f x is still of type unknown\n }\n}\nRun Code Online (Sandbox Code Playgroud)\n\n但是,如果我去掉该isString函数并将其逻辑内联到if语句中,那么 TS 编译器就可以很好地了解该类型。
我知道我可以使用as string类型谓词来转换类型,并is string在函数中使用类型注释isString。但我刚刚开始思考——为什么TS不能缩小类型了x。