所以在 Typescript 的泛型指南的末尾有这段代码
class BeeKeeper {
hasMask: boolean = true;
}
class ZooKeeper {
nametag: string = 'abc';
}
class Animal {
numLegs: number = 123;
}
class Bee extends Animal {
keeper: BeeKeeper = new BeeKeeper();
}
class Lion extends Animal {
keeper: ZooKeeper = new ZooKeeper();
}
function createInstance<A extends Animal>(c: new () => A): A {
return new c();
}
createInstance(Lion).keeper.nametag; // typechecks!
createInstance(Bee).keeper.hasMask; // typechecks!
Run Code Online (Sandbox Code Playgroud)
这个程序只是创建一些类,然后定义一个方法来创建给定类的实例。但是,当我们尝试与变量进行比较时,就会出现问题c
。例如,如果我们想检查c == Lion
Typescript是否抛出错误(playground link …
我有一个进度条,我在页面加载时使用 CSS 为其设置动画。页面加载完成后,我将进度条的display
属性设置为none
使用 Javascript,因此将显示页面内容。display
问题是:当动画的属性设置为 时,动画是否仍会在后台运行none
?
我有一个带有 2 个模块(包)的 Lerna monorepo:ps
和cli
.
ps
只是导出一个导入whatever
的函数cli
。
然而,当我尝试使用 VSCode 调试此代码时,我的断点停止在生成的 Javascript 文件上,而不是我的源 Typescript 文件上。
这已经困扰了我几个小时,我已经广泛地使用了我的tsconfig.json
和launch.json
使用vscode-pwa-analyzer
来查看 VSCode 能够检测我的源 TS 代码,但我无法找到修复方法。
编辑:我使用以下设置: macOS Big Sur v11.1 Node.js v14.8.0 Typescript v4.1.3
这是我上面的调试的转储文件,您可以加载到vscode-pwa-analyzer。
我可以在这里看到一些未绑定断点错误。
javascript source-maps typescript visual-studio-code vscode-debugger
所以我有以下代码:
class A {
constructor(private num: number = 1) {
}
private changeNum() {
this.num = Math.random();
}
private fn() {
if(this.num == 1) {
this.changeNum();
if(this.num == 0.5) {
// do stuff
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
它是一个类,具有一个属性num
和一个changeNum
更改该数字的函数。
然后,它也有另一种功能fn
,其首先检查是否num
等于1,如果是,改变了num
通过changeNum
并再次检查它。
问题是Typescript无法检测到num被更改,changeNum
并引发以下错误:
This condition will always return 'false' since the types '1' and '0.5' have no overlap.
有没有一种方法可以使Typescript识别出num
已更改的内容changeNum
?
编辑:我发现的一件事是,更改if(this.num == 0.5)
为if(this.num …