小编Mak*_*sym的帖子

以编程方式应用 Typescript 重构

VS Code 有'Convert namespace import to named imports'重构。据我了解,重构是在 Typescript 代码库本身中定义的,因此它不是特定于 VS Code 的。

我需要在 Jest 转换器中以编程方式对源文件运行此重构。不幸的是,我无法找到任何有关以编程方式运行 TypeScript 重构的文档。任何帮助表示赞赏。

abstract-syntax-tree automated-refactoring typescript typescript-compiler-api

10
推荐指数
1
解决办法
1673
查看次数

是否有工具可以在编译期间显示所有 Angular AOT 问题?

当我当前运行ng build命令时,我会遇到一大堆运行时问题,而这些问题在我以 JIT 模式(Angular 6)编译时不存在。

有没有办法在编译时获得所有 AOT 问题的列表,而无需手动找出它们?

我认为至少有一套tslint规则可以强制开发人员编写符合 AOT 的代码,但我找不到。我错过了什么吗?

任何帮助表示赞赏。

更新:我正在谈论的运行时问题之一是mat-icon来自 Angular Material 的 s 不起作用。它们只是呈现为文本,如“ chevron_left ”。显然,捆绑包不包含MatIconModule. 但是,JIT 一切都按预期工作。

此外,当我阅读 AOT 文档时,我看到 AOT 编译器不支持对本地(未导出)符号的引用。但是,我确实在我的装饰器中引用了本地符号,但是我没有收到任何编译错误通知我这一点。

tslint angular2-aot angular

5
推荐指数
0
解决办法
1234
查看次数

为什么非空断言运算符 (!) 不会向结果 JS 发出实际的非空和非未定义检查

当使用非空断言运算符时,Typescript 编译器向结果 JS 发出非未定义和非空检查似乎是合理的。IE,:

function fun1(node: SomeType | undefined) {
    fun2(node!);
}
Run Code Online (Sandbox Code Playgroud)

应该转换为:

function fun1(node) {
    if (node === undefined || node === null) {
        throw new Error('The non-null assertion failed!');
    }
    fun2(node);
}
Run Code Online (Sandbox Code Playgroud)

然而,正如文档所说的那样,它只会被转译为:

function fun1(node) {
    fun2(node);
}
Run Code Online (Sandbox Code Playgroud)

为什么呢?不将检查添加到输出 JS 代码背后的原因是什么?

null undefined typescript

2
推荐指数
1
解决办法
3588
查看次数

JavaScript 数组扩展语法的运行时复杂度是多少?

假设我想使用数组扩展语法复制现有数组,如下所示:

const a = [1, 2, 3, ..., n];
const b = [...a]
Run Code Online (Sandbox Code Playgroud)

的运行时复杂度是多少const b = [...a]?我似乎找不到任何相关信息。

javascript algorithm performance ecmascript-6

2
推荐指数
1
解决办法
733
查看次数