考虑以下Typescript类:
interface ITest {
example(): string;
}
class A implements ITest {
example() {
return 'Test A';
}
}
class B extends A {
example() {
return 'Test B';
}
}
这转换为以下Javascript代码(请参阅http://www.typescriptlang.org/Playground):
var __extends = this.__extends || function (d, b) {
for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
function __() { this.constructor = d; }
__.prototype = b.prototype;
d.prototype = new __();
};
var A = (function () {
function A() {
}
A.prototype.example = function () {
return 'Test A';
};
return A;
})();
var B = (function (_super) {
__extends(B, _super);
function B() {
_super.apply(this, arguments);
}
B.prototype.example = function () {
return 'Test B';
};
return B;
})(A);
代码正确运行并提供结果
"Test A"
"Test B"
但是使用JSLint检查此代码会发出警告
一个警告17
'B'已经定义。
JsLint似乎与__extends(B, _super)
有问题。但当然这对于扩展课程是必要的。那么在TypeScript中使用继承时如何确保JSLint不会抱怨?
答案 0 :(得分:4)
不要在生成的代码上运行lint。 Lint是在源代码上强制执行样式和最佳实践,因此它应该在任何代码生成工具的输入上运行。这些工具的输出很少(如果有的话)对于lint很友好,并且它不是你需要阅读或验证的东西。使用编译语言时,在源代码而不是二进制文件上运行lint,这是JS等价物。
在将其提供给TS编译器之前,您应该使用TSLint之类的工具来检查Typescript。如果您正在使用Gulp(或Grunt),则有TSLint插件(gulp-tslint和grunt-tslint)。