Typescript编译器即使在编译错误后也会生成javascript
我刚开始打字,尝试了一些基本的东西。所以我编译了下面的Typescript编译器即使在编译错误后也会生成javascript,javascript,typescript,Javascript,Typescript,我刚开始打字,尝试了一些基本的东西。所以我编译了下面的app1.tscode class Monster { constructor(name, initialPosition) { this.name = name; this.initialPosition = initialPosition; } } 我相信我们可以像在JS中一样,动态地向类Monster添加任何属性。所以this.name和this.initialPosition应该是一
app1.ts
code
class Monster {
constructor(name, initialPosition) {
this.name = name;
this.initialPosition = initialPosition;
}
}
我相信我们可以像在JS中一样,动态地向类Monster
添加任何属性。所以this.name
和this.initialPosition
应该是一种有效的方法。但一旦我编译代码,它就会抛出下面的错误
app1.ts(3,14):错误TS2339:类型上不存在属性“name”
“怪物”
app1.ts(4,14):错误TS2339:属性“initialPosition”不存在
关于“怪物”类型
此时,我认为我们可能无法动态添加属性(好吧,我知道我们不能像ECMA6那样添加属性,我们必须定义属性-这很好),但当我检查生成的JS时,我真的很惊讶。编译错误后,它生成下面的JS代码
var Monster = /** @class */ (function () {
function Monster(name, initialPosition) {
this.name = name;
this.initialPosition = initialPosition;
}
return Monster;
}());
我有点困惑。为什么编译错误后会生成JS?到底发生了什么 有些类型的错误与允许编译器发出JS的类型检查有关。仅仅因为typescript编译器不能证明程序是类型安全的,并不意味着它不会运行。如果代码可以运行,它将被输出到JS(因此类型错误允许emit,但语法错误不允许)
有一个编译器选项控制此
--noemitorror
。您可以阅读更多。。。谁说不行?(不同的SE站点,但无论如何值得一读)@user202729好的,如果是,为什么会这样?