Jen*_* S. 12 amd requirejs typescript
我使用的是TypeScript版本1.0.1.0
当同时使用TypeScript和AMD模块时,我应该在哪里编写"use strict"语句?它应该高于还是低于进口?
我可以在导入上面写它,以便这个TypeScript代码:
"use strict";
import Backbone = require('backbone');
class MyClass extends Backbone.View<Backbone.Model> { }
export = MyClass;
Run Code Online (Sandbox Code Playgroud)
使用该文件顶部的语句生成此JavaScript:
"use strict";
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 __();
};
define(["require", "exports", 'backbone'], function(require, exports, Backbone) {
var MyClass = (function (_super) {
__extends(MyClass, _super);
function MyClass() { _super.apply(this, arguments); }
return MyClass;
})(Backbone.View);
return MyClass;
});
Run Code Online (Sandbox Code Playgroud)
或者我可以在我的导入下面加上"use strict"语句.这样的TypeScript:
import Backbone = require('backbone');
"use strict";
class MyClass extends Backbone.View<Backbone.Model> { }
export = MyClass;
Run Code Online (Sandbox Code Playgroud)
使用RequireJS函数声明顶部的语句生成此Javascript:
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 __();
};
define(["require", "exports", 'backbone'], function(require, exports, Backbone) {
"use strict";
var MyClass = (function (_super) {
__extends(MyClass, _super);
function MyClass() { _super.apply(this, arguments); }
return MyClass;
})(Backbone.View);
return MyClass;
});
Run Code Online (Sandbox Code Playgroud)
哪一个是正确的?即使语句完全丢失,TSLint也不会报告违规行为.这可能是TSLint中的一个错误吗?
第一个变体导致整个脚本严格:
"use strict";
import Backbone = require('backbone');
class MyClass extends Backbone.View<Backbone.Model> { }
export = MyClass;
Run Code Online (Sandbox Code Playgroud)
第二个将严格范围限制为(生成的)函数:
import Backbone = require('backbone');
"use strict";
class MyClass extends Backbone.View<Backbone.Model> { }
export = MyClass;
Run Code Online (Sandbox Code Playgroud)
实际上,它在您的情况下没有什么区别,因为它只是严格声明(包括自动生成的“扩展”代码或不包括)之间的区别 - 并且自动生成的代码是严格兼容的。